java类Class方法功能小结

本文总结了Java中Class类的主要方法,包括加载类、获取类信息、实例化对象等方面,是理解Java反射机制的关键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Class方法功能小结

 public String toString() {
        return (isInterface() ? "interface " : (isPrimitive() ? "" : "class "))
            + getName();
    } 
/**
输出类、接口,原生类型的描述,输出示例:
class xxx.xxx.xxClass.
interface xxx.xxx.xxInterface
int
double
long
*/

public native boolean isInstance(Object obj);//判断obj是否是当前类的实例
/**
例如:
Object.class.isInstance(new MyClass()) 返回就为true,因为所有类的祖先基类都是Object
MyInterface.class.isInstance(new MyInterfaceImpl()) 返回就为true,因为MyInterfaceImpl是MyInterface的实现类
*/
public native boolean isAssignableFrom(Class<?> cls)// 判断cls类型的实例能否被赋值给 当前类声明的变量

/**
例如:
Object.class.isAssignableFrom(new MyClass()) 返回就为true,因为所有类的祖先基类都是Object
MyInterface.class.isAssignableFrom(new MyInterfaceImpl) 返回就为true,因为MyInterfaceImpl是MyInterface的实现类
*/
public native boolean isInstance(Object obj);//判断obj是否是当前类的实例
/**
例如:
Object.class.isInstance(new MyClass()) 返回就为true,因为所有类的祖先基类都是Object
MyInterface.class.isInstance(MyInterfaceImpl.class) 返回就为true,因为MyInterfaceImpl是MyInterface的实现类
*/
public String getName();//获取当前类型的全类名
/**
<p> Examples:
     * <blockquote><pre>
     * String.class.getName()
     *     returns "java.lang.String"
     * byte.class.getName()
     *     returns "byte"
     * (new Object[3]).getClass().getName()
     *     returns "[Ljava.lang.Object;"
     * (new int[3][4][5][6][7][8][9]).getClass().getName()
     *     returns "[[[[[[[I"
     * </pre></blockquote>

*/
  public Package getPackage()//获取当前类的包名
/**
如果是一般的class这里很好理解,就是所在的报名;但如果是原生类型,或者数组呢?
1.如果是数组,返回 null;
2.如果是原生类型,也返回返回 null

*/

/**
Returns the {@code Class} representing the component type of an
     * array.  If this class does not represent an array class this method
     * returns null.
*/
  public native Class<?> getComponentType()
  
/** 
1.如果不是数组类型,返回为空
2.如果是数组类型,则返回其元素类型:
(new int[3]).getClass().getComponentType() 返回 int.class
(new String[3]).getClass.getComponentType 返回 java.lang.String.class;
*/
 public String getSimpleName()//获取简单名称,不带报名
  
/** 
1.如果是原生类型,如 int.class.getSimpleName() 返回 int
2.如果是数组类型,则返回其元素类型的修饰符:
(new int[3]).getClass().getSimpleName() 返回 int[]
(new String[3]).getClass.getSimpleName()返回 Integer[]
*/
public String getCanonicalName()//获取最权威的类名称,由Java虚拟机定义
  
/** 
1.如果是原生类型,如 int.class.getCanonicalName() 返回 int
2.如果是数组类型,则返回其元素类型的修饰符:
(new int[3]).getClass().getCanonicalName() 返回 int[]
(new String[3]).getClass.getCanonicalName()返回 java.lang.Integer[]
3.如果是Object类型,返回全类名,包名+类名
*/
 public Field[] getFields() throws SecurityException;
  
/** 
1.如果是原生类型,如 int.class.getFields() 返回 空
2.如果是数组类型,则返回其元素类型的修饰符:
(new int[3]).getClass().getFields() 返回 空
(new String[3]).getClass.getFields()返回 空
3.如果是普通类,则返回它自己所有的public字段(静态字段和实例字段)和他所能够继承的所有public字段(静态字段和实例字段)
*/
public Constructor<?>[] getConstructors() throws SecurityException;
  
/** 
1.如果是原生类型,如 int.class.getConstructors() 返回 空
2.如果是数组类型,则返回其元素类型的修饰符:
(new int[3]).getClass().getConstructors() 返回 空
(new String[3]).getClass.getConstructors()返回 空
3.如果是普通类,则返回它自己所有的public型的构造函数,私有函数不算
*/
public Field getField(String name)  throws NoSuchFieldException, SecurityException
//普通类,则可以获取它自己名称为name的public字段(静态字段和实例字段)或者是名称为name的他所能够继承的public字段(静态字段和实例字段)
 public Method getMethod(String name, Class<?>... parameterTypes)
        throws NoSuchMethodException, SecurityException
//普通类,则可以获取它自己名称为name的public方法(类方法和实例方法)或者是名称为name的他所能够继承的public方法(类方法和实例方法)
 public Constructor<T> getConstructor(Class<?>... parameterTypes)
        throws NoSuchMethodException, SecurityException
//普通类,可以获取它自己public构造函数,参数为parameterTypes
 public Field[] getDeclaredFields() throws SecurityException
//普通类,可以获取它自己所有的成员字段(静态字段和实例字段),不包含从父类或接口继承而来的
  public Constructor<?>[] getDeclaredConstructors() throws SecurityException
//普通类,可以获取它自己所有的成员方法(类字段和实例方法),不包含从父类或接口继承而来的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值