Java产生Class类的三种实例化对象的方法
1.object.getClass
2.类名.class直接根据某个具体的类来取得Class实例化对象
3.Class.forName(String className)
public class TestClass {
public static void main(String[] args) {
//1.object.getClass
Date date1 = new Date();
Class cls = date1.getClass();
//java.util.Date
System.out.println("方法1 " + cls.getName());
//class java.util.Date
System.out.println("方法1 " + cls);
//2.类名.class
//一般用类的全限定名
Class cls1 = java.util.Date.class;
//class java.util.Date
System.out.println("方法2 " + cls1);
//3.推荐用
Class cls2 = null;//放在外面可以访问
try {
cls2 = Class.forName("java.util.Date");
System.out.println("方法3 " + cls2);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
System.out.println("比较三个对象");
System.out.println(cls1 == cls);
System.out.println(cls == cls2);
}
}
推荐用第三种,第一种已经new了一个对象了,第二种写的太繁琐了
对象实例化的三种方法
1.new关键字
2.反射
3.反序列化
在反射中提供public T newInstance() throws InstantiationException, IllegalAccessException方法
public class TestClass1 {
public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
//1.getClass()方法
Date date = new Date();
Class cls = date.getClass();
try {
Date date1 = (Date) cls.newInstance();
System.out.println("1 " + date1);
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
//2.全限定类名.class
Class cls2 = java.util.Date.class;
try {
Date date3 = cls2.newInstance();
System.out.println("2 "+date3);
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
Date date3 = cls2.newInstance();
System.out.println("2 "+date3);
//3.Class.forName方法,大写Class
Class cls1 = Class.forName("java.util.Date");
Object date2 = cls1.newInstance();
System.out.println("3 " + date2);
}
}