public class Main { public static void main(String[] args) { //Foo的实例对象创建 Foo foo = new Foo("abcdefgh"); //Class类的实例对象 //任何一个类都是Class的实例对象,这个实例对象有三种表示方式 //第一种表示方式----》 实际在告诉我们任何一个类都有一个静态成员方法 Class c1 = Foo.class; //第二种表示方式 已经知道该类的对象通过gtClass方法 Class c2 = foo.getClass(); //c1,c2表示了Foo类的类类型(class type) /**万事万物皆是对象, * 类也是对象,是class类的实例对象 * 这个对象我们称为该类的类类型 * */ //c1 or c2 都代表了Foo类的类类型 ,一个类只能是Class类的对象 System.out.println(c1==c2); //第三种方式 Class c3 = null; try { c3 = Class.forName("Foo"); } catch (ClassNotFoundException e) { e.printStackTrace(); } System.out.println(c2==c3); try { Foo foo1=(Foo) c1.newInstance(); // 需要无参的构造方法 foo1.print(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } //我们完全通过类的类类型创建该类的对象实例---> 通过c1 or c2 or c3 } class Foo{ void print(){ System.out.println("Foo"); } Foo(String a){ } Foo(){ } }
Java反射创建类对象的三种实现方法
最新推荐文章于 2023-03-05 20:10:35 发布