Class

  • Class对象
    Class cls = int.class;
    System.err.println(cls);
    cls = byte.class;
    System.err.println(cls);
    cls = String[][].class;
    System.err.println(cls);
    cls = void.class;
    System.err.println(cls);
    
  • Class对象的比较操作
    if (e.getClass() == Employee.class)
    

获取Class对象的三种方式

  1. 知道一个类,直接获取Class对象

    Class<?> cls1 = ReflectionActivity.class;
    
  2. 如果已经得到了某个对象,可以通过这个对象获取 Class 对象

    ReflectionActivity activity = new ReflectionActivity();
    Class<?> cls2 = activity.getClass();
    
  3. 如果你在编译期获取不到目标类型,但是你知道它的完整类路径,那么你可以通过如下的形式来获取 Class 对象,这样获取可能会抛出异常 ClassNotFoundException

try {
    Class<?> cls3 = Class.forName("com.sun.study.ui.activity.ReflectionActivity");
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}

资源加载

资源可以有子目录,可以是相对路径也可以是绝对路径;如果资源文件在JAR包中也可以被定位到;
InputStream stream = Appliction.class.getResourceAsStream("config/source.txt");

API

  • isAssignableFrom(Class cls) 用来判断一个类Class1和另一个类Class2是否相同或是另一个类的子类或接口;
  • public static Class forName(String className) 返回描述类名为className的Class对象
  • toString()
    public String toString() {
      return (isInterface() ? "interface " : (isPrimitive() ? "" : "class "))
          + getName();
    }
    
  • public T newInstance() 返回类的实例

isArray()

User user = new User();
System.err.println(User.class.isArray());
System.err.println(User[].class.isArray());

results matching ""

    No results matching ""