java类Class方法功能小结

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
//普通类,可以获取它自己所有的成员方法(类字段和实例方法),不包含从父类或接口继承而来的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java多线程是指在一个Java程序中同时执行多个线程,每个线程都是独立的执行流。Java中创建线程的方式有三种:继承Thread、实现Runnable接口和实现Callable接口。每种方式都有其优缺点。 1. 继承Thread创建线程: ```java class MyThread extends Thread { public void run() { // 线程执行的代码 } } // 创建线程对象并启动线程 MyThread thread = new MyThread(); thread.start(); ``` 优点:简单易用,可以直接重写Thread的run()方法。 缺点:由于Java不支持多继承,继承了Thread就无法再继承其他。 2. 实现Runnable接口创建线程: ```java class MyRunnable implements Runnable { public void run() { // 线程执行的代码 } } // 创建线程对象并启动线程 Thread thread = new Thread(new MyRunnable()); thread.start(); ``` 优点:避免了单继承的限制,可以继续继承其他或实现其他接口。 缺点:需要额外创建Thread对象,并将Runnable对象作为参数传递给Thread对象。 3. 实现Callable接口创建线程: ```java class MyCallable implements Callable<Integer> { public Integer call() throws Exception { // 线程执行的代码 return 0; } } // 创建线程池对象 ExecutorService executor = Executors.newFixedThreadPool(1); // 提交Callable任务并获取Future对象 Future<Integer> future = executor.submit(new MyCallable()); // 获取线程执行结果 int result = future.get(); ``` 优点:可以获取线程执行的结果,并且可以抛出异常。 缺点:相对于前两种方式,使用Callable需要更多的代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值