【java】--- 反射获取Class类的4种方式

2022-09-08 11:26:34

转载:https://blog.csdn.net/u010613321/article/details/72890092

1.调用运行时类本身的.class属性

Class clazz = String.class;

2.通过运行时类的对象获取

Person p = new Person();

Class clazz = p.getClass();

3.通过Class的静态方法获取:体现反射的动态性

String className = “java.util.commons”;

Class clazz = Class.forName(className);

4.通过类的加载器

String className = “java.util.commons”;

ClassLoader classLoader = this.getClass().getClassLoader();

Class clazz = classLoader.loadClass(className);

扩展:

类加载起分为三种:系统类加载器:ClassLoader.getSystemClassLoader()

   扩展类加载器:ClassLoader.getSystemClassLoader().getParent()

  引导类加载器(核心库、对象----如String,Object):无法直接获取

配置文件读取:

如在包com.test.java下有配置文件jdbc.properties

    内容为:user = root           password=pd123

   类加载器加载(指定目录如:com.test.java):

   ClassLoader classLoader = this.getClass().getClassLoader();
   InputStream is = classLoader.getResourceAsStream("com/test/java/jdbc.properties");
     Properties properties = new Properties();
   properties.load(is);
   String user = properties.getProperty("user");
   System.out.println(user);

   文件字节输入流加载(根目录:src):
//对比FileInputStream获取当前项目根目录下的文件
   FileInputStream is = new FileInputStream(new File("jdbc.properties"));

   Properties properties = new Properties();
   properties.load(is);
   String user = properties.getProperty("user");
   System.out.println(user);

得到Class 后得到对应对象的实例--------------> class.newInstance() <------- 需要对应的对象有空参的构造器以及对应的调用构造器权限

  • 作者:Beat_Boxer
  • 原文链接:https://blog.csdn.net/Beat_Boxer/article/details/87706076
    更新时间:2022-09-08 11:26:34