即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

反射—获取Class类的4种方式

编程语言 u010613321 21℃ 0评论

随笔—————————————获取Class类的4种方式—————————————————————————————–


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() <------- 需要对应的对象有空参的构造器以及对应的调用构造器权限

转载请注明:CodingBlog » 反射—获取Class类的4种方式

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情