java反射

本文详细介绍了如何通过对象实例、静态成员和Class类名获取Class对象,以及Class对象的实例化、类型判断和继承/实现关系检查。涵盖了isInstance(), isAssignableFrom(), getName(), 等核心方法及其应用场景。
摘要由CSDN通过智能技术生成

1.获取Class对象的方式

1.1通过一个事物的个体(对象),来获取对应的Class对象

CouponService c=new CouponService();
Class<?> clas=c.getClass();

1.2 使用静态成员class获取Class对象

Class<?> clas=CouponService.class;

1.3使用Class类中的forName()方法获取给定类的Class对象

Class<?> clas=Class.forName("com.tanker.service.CouponService");
ClassLoader loader=Thread.currentThread().getContextClassLoader()//获取当前线程的类加载器

2.通过class对象的数据

  • T newInstance()

此方法创建此Class对象表示的类的新实例。通过具有空参数列表的新表达式创建类。如果尚未初始化,则初始化该类。

  • boolean isInstance(Object obj)

此方法确定指定的Object是否与此Class表示的对象分配兼容。它相当于java中的instanceof运算符

Class c = Class.forName("java.lang.String");
        String url = "http://niocoder.com";
        int i = 10;
        boolean b1 = c.isInstance(url);
  • boolean isAssignableFrom(Class<?> cls)

此方法确定此Class对象表示的类或接口是否与指定的Class参数表示的类或接口相同,或者是超类或超接口。

1.public class IsAssignableFrom extends Thread

2. Class myClass = Class.forName("com.niocoder.test.java.method.IsAssignableFrom");

Class c1 = Class.forName("java.lang.Thread");

boolean b1 = c1.isAssignableFrom(myClass);  //为ture

3.继承或者实现关系为ture

  • isInterface()

此方法确定指定的Class对象是否表示接口类型

  • boolean isPrimitive()

此方法确定指定的Class对象是否表示基本类型。即boolean , byte , char , short , int , long , float和double 。

  • boolean isArray()

此方法确定指定的Class对象是否表示数组类。

  • boolean isAnonymousClass()

当且仅当此类是匿名类时,此方法才返回true。匿名类与本地类类似,只是它们没有名称

  • boolean isLocalClass()

当且仅当此类是本地类时,此方法才返回true。本地类是在Java代码块中本地声明的类,而不是类的成员。

  • boolean isMemberClass()

当且仅当此类是Member类时,此方法返回true。

描述:

  • boolean isEnum()

当且仅当此类在源代码中声明为枚举时,此方法才返回true

描述:

  • boolean isAnnotation()

此方法确定此Class对象是否表示注释类型。请注意,如果此方法返回true,则isInterface()方法也将返回true,因为所有注释类型也是接口

 

  • String getName()

返回由 类对象表示的实体(类,接口,数组类,原始类型或空白)的名称(含包明),作为 String 。

描述:

  • String getSimpleName()

此方法返回源代码中给出的基础类的名称(不含包名)。如果基础类是匿名类,则返回空字符串

 

  • ClassLoader getClassLoader()

此方法返回此类的类加载器。如果类加载器是bootstrap类加载器,那么此方法返回null,因为引导类加载器是用C,C ++等本机语言实现的。如果此对象表示基本类型或void,则返回null

  • TypeVariable<Class>[ ] getTypeParameters()

此方法返回一个TypeVariable对象数组,该对象表示由此GenericDeclaration对象表示的泛型声明声明的类型变量,按声明顺序

 

  • Class<? super T> getSuperclass()

此方法返回表示此Class所表示的实体(类,接口,基本类型或void)的超类的Class。如果此Class表示Object类,接口,基本类型或void,则返回null。如果此对象表示数组类,则返回表示Object类的Class对象。

描述:

  • Type getGenericSuperclass()

此方法返回表示此Class所表示的实体(类,接口,基本类型或void)的直接超类的Type。如果此Class表示Object类,接口,基本类型或void,则返回null。如果此对象表示数组类,则返回表示Object类的Class对象。

描述:

  • Class<?>[] getInterfaces()

此方法返回由此对象表示的类或接口实现的接口。如果此对象表示不实现接口的类或接口,则该方法返回长度为0的数组。如果此对象表示基本类型或void,则该方法返回长度为0的数组。

描述:

语法 :
public Class<?>[] getInterfaces()
参数 :
NA
返回 :
an array of interfaces implemented by this class.

Package getPackage()

此方法返回此类的包。

描述:

测试类:

输出:

Field[] getFields()

此方法返回一个Field对象数组,该对象反映此Class对象表示的类(及其所有超类)或接口(及其所有超类)的所有可访问公共字段

描述:

测试类:

输出:

  • Method[] getMethods()

此方法返回一个Method对象数组,这些对象反映了类或接口的所有可访问的公共方法,以及从此Class对象表示的超类和超级接口继承的方法。

 

  • Constructor<?>[] getConstructors()

此方法返回一个Constructor对象数组,这些对象反映此Class对象所表示的类的所有公共构造函数

描述:

测试类:

输出:

public java.lang.Boolean(boolean)
public java.lang.Boolean(java.lang.String)
  • Field getField(String fieldName)

此方法返回一个Field对象,该对象反映此Class对象所表示的类或接口的指定公共成员字段

描述:

  • Method getMethod(String methodName,Class… parameterTypes)

此方法返回一个Method对象,该对象反映此Class对象所表示的类或接口的指定公共成员方法

描述:

  • Constructor<?> getConstructor(Class<?>… parameterTypes)

此方法返回一个Constructor对象,该对象反映此Class对象所表示的类的指定公共构造函数.parameterTypes参数是一个Class对象的数组,用于按声明的顺序标识构造函数的形式参数类型

 

  • T cast(Object obj)

此方法用于将对象强制转换为此Class对象表示的类或接口。

描述:

语法 :
public T cast(Object obj)
参数 :
obj - the object to be cast
返回 :
the object after casting, or null if obj is null
  • Class<? extends U> asSubclass(Class clazz)

此方法用于转换此Class对象以表示由指定的类对象表示的类的子类。它始终返回对此类对象的引用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值