Java创建对象的方式有好几种,有:使用new关键字、Class反射调用、使用Clone方法、使用序列化、Unsafe.allocateInstance(),这里不讨论这些内容,仅做一些代码的记录;
可参考文章:
https://blog.csdn.net/Crazypokerk_/article/details/93217863
https://blog.csdn.net/u010889616/article/details/78946580
package com.zibo.java.february.fourth;
public class CatTest {
public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
/*
* 创建对象的三种方式:
* 1、通过new关键字创建;
* 2、通过Class.forName(String ClassName)和Class.newInstance()创建;
* 3、通过Object.class和Class.newInstance()创建;
*/
// 1、通过new关键字创建;
Cat cat1 = new Cat();
cat1.setName("喵咪");
cat1.setAge(12);
System.out.println(cat1);
// 2、通过Class.forName(String ClassName)和Class.newInstance()创建;
Class<?> aClass = Class.forName("com.zibo.java.february.fourth.Cat");
Object instance = aClass.newInstance();
if(instance instanceof Cat){
Cat cat2 = (Cat)instance;
cat2.setName("小喵");
cat2.setAge(6);
System.out.println(cat2);
}
// 3、通过Object.class和Class.newInstance()创建;
Class<Cat> catClass = Cat.class;
Cat cat3 = catClass.newInstance();
cat3.setName("大喵");
cat3.setAge(9);
System.out.println(cat3);
}
}
class Cat{
private String name;
private int age;
public Cat() {
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Cat{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}