java反射--Class类
面向对象的世界里,万事万物皆对象。
1)类是谁的对象呢?
类是对象,类是java.lang.Class类的实例对象。
2)这个对象如何表示呢?
package com.reflect; public class ClassDemo1 { public static void main(String[] args) { //Foo的对象如何表示 Foo foo1=new Foo();//f001就表示出来了 //Foo这个类,也是一共实例对象,Class类的实例对象,如何表示呢? //任何一共类都是Class类的实例对象,这个实例对象有三种表示方式 //第一种表示方式--》实际告诉我们,任何一共类都有一个隐含的静态成员变量class Class c1=Foo.class; //第二种表达方式 已知该类的对象,通过getClass方法 Class c2=foo1.getClass(); //官网c1,c2表示了Foo类的类类型(class type) //万事万物皆对象, //类也是对象,是Class类的实例对象, //这个对象我们称为类的类类型 //不管c1 还是 c2 都代表了Foo类的类类型,一共类只可能是Class类的一共实例对象 System.out.println(c1==c2); //第三种表达方式 Class c3=null; try { c3=Class.forName("com.reflect.Foo"); } catch (ClassNotFoundException e) { e.printStackTrace(); } System.out.println(c2==c3); //我们完全可以通过类的类类型创建该类的实例对象-->,通过c1或c2或c3创建Foo的实例 try { Foo foo2=(Foo)c1.newInstance(); //需要有无参数的构造方法 foo2.print(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } } class Foo{ void print() { } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步