3.3Java语言的反射(Reflection)

1.获取字节码文件对象

Object 根类中定义了一个 getClass() 方法,该方法返回一个类型为 Class 的对象。

Class labelCls = label1.getClass();    // label1为 JLabel 类的对象

2.获取信息

利用 Class 类的对象 labelCls 可以访问 labelCls 对象的描述信息、JLabel 类的信息以及基类 Object 的信息。

类型访问方法返回值类型说明
包路径getPackage()Package 对象获取该类的存放路径
类名称getName()String 对象获取该类的名称
继承类getSuperclass()Class 对象获取该类继承的类
实现接口getlnterfaces()Class 型数组获取该类实现的所有接口
构造方法getConstructors()Constructor 型数组获取所有权限为 public 的构造方法
构造方法getDeclaredContruectors()Constructor 对象获取当前对象的所有构造方法
方法getMethods()Methods 型数组获取所有权限为 public 的方法
方法getDeclaredMethods()Methods 对象获取当前对象的所有方法
成员变量getFields()Field 型数组获取所有权限为 public 的成员变量
成员变量getDeclareFileds()Field 对象获取当前对象的所有成员变量
内部类getClasses()Class 型数组获取所有权限为 public 的内部类
内部类getDeclaredClasses()Class 型数组获取所有内部类
内部类的声明类getDeclaringClass()Class 对象如果该类为内部类,则返回它的成员类,否则返回 null

2.1getClass()

用来查看当前对象属于哪个类,或者说是哪个类的实例。

"ff".getClass().getName();

2.2getSuperClass()

用来查看对象的类继承自哪个父类。

"ff".getClass().getSuperclass().getName();

2.3instanceof

在 Java 中可以使用 instanceof 关键字判断一个对象是否为一个类(或接口、抽象类、父类)的实例。

boolean result = obj instanceof Class

其中,obj 是一个对象,Class 表示一个类或接口。obj 是 class 类(或接口)的实例或者子类实例时,结果 result 返回 true,否则返回 false。

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/java/javalang/2516.html

(0)
上一篇 2021年1月2日 17:52
下一篇 2021年1月3日 02:29

相关推荐

  • 3.1Java语言的Lambda表达式

    1.Lambda表达式声明 Lambda表达式 称为 匿名函数,即没有名称的方法,也可称为闭包(Closure),允许把函数作为一个方法的参数传递。 -> 被称为箭头操作符或Lambda操作符,箭头操作符将 Lambda 表达式拆分成两部分: 可选参数类型:Lambda表达式能够推导出参数的类型。 可选参数圆括号…

    Java语言教程 2021年1月1日
    05630
  • 1.3Java语言的分隔符(Separator)和运算符(Operator)

    分隔符(Separator) Java语言包括9个分隔符:圆括号(( ))、花括号( { })、方括号([ ])、分号(;)、逗号(,)、圆点(.)、省略号(…)、at符号(@)、双冒号(::)。 运算符(Operator) 1.算术运算符 运 算 符 名 称 说 明 例 子 –  取反符号 取反…

    Java语言教程 2020年11月3日
    01.8K0
  • 2.6Java语言的数组(Array)

    数组(array)是一种数据结构,可以用一个统一的数组名和不同的下标(index,或称索引)来确定数组中唯一的元素。根据数组的维度,可以将其分为一维数组和多维数组。 数组中的元素是有序的,通过索引访问。 数组中的元素必须属于同一个类型,而且可以随时替换元素。 数组的长度(元素的个数)不可以动态改变,不可以向数组添加、删…

    Java语言教程 2020年12月6日
    07270

发表评论

登录后才能评论