Java中的Class类常用方法

获取Class对象的三种方法

Class类的构造器是私有的,不能通过构造方法new一个Class对象。

  1. Object类中有一个getClass()方法,返回值类型是Class类,所有子类都继承了这个方法,所以可以通过这个方法获得Class对象。
Demo2 demo2 = new Demo2();
Class clazz = demo2.getClass();
  1. 通过全限定名来获取Class对象
Class clazz1 = Class.forName("com.example.demo.Demo2");
  1. 通过类名.class
Class clazz2 = Demo2.class;

Class类的常用方法

  • getName(),获取包名+类名
//获取Class对象
Class clazz = demo2.getClass();
//com.example.demo.Demo2
String name = clazz.getName();
  • getSimpleName(),获取类名
//结果:Demo2
String simpleName = clazz.getSimpleName();
  • getDeclaredFields(),获取类的全部属性,包括public、private和proteced的,不包括父类的
Field[] declaredFields = clazz.getDeclaredFields();
//结果:str1
String name1 = declaredFields[3].getName();
Class type = declaredFields[3].getType();
//结果:java.lang.String
String name2 = type.getName();
  • getDeclaredMethods(),获取类的全部方法,包括public、private和proteced的,不包括父类的
Method[] declaredMethods = clazz.getDeclaredMethods();
  • getFields(),获取public的属性,包括父类的
//fields[0]:public java.lang.String com.example.demo.Demo2.str1
Field[] fields = clazz.getFields();
  • getModifiers(),获取字段和方法等的修饰符类型,返回值是int类型,什么都不加是0,public 是1,private是2,protected是4,static 是8,final是16,等等,多个修饰符修饰的话,返回的是每个修饰符代表的int值的和
int modifiers1 = fields[0].getModifiers();
  • getResource(),用于返回具有给定资源名称的URL(统一资源定位符)
//传null会空指针异常
//URL resource0 = Test1.class.getResource(null);
//结果:file:/D:/IdeaProjects/demo/target/classes/com/example/demo/
URL resource1 = Test1.class.getResource("");
//结果:file:/D:/IdeaProjects/demo/target/classes/
URL resource2 = Test1.class.getResource("/");
//结果:/D:/IdeaProjects/demo/target/classes/
String path = Test1.class.getResource("/").getPath();
  • newInstance(),为类创建一个实例
Demo2 o = (Demo2)clazz1.newInstance();

你可能感兴趣的:(Java中的Class类常用方法)