Java Class类使用教程
我们了解了 Class 类实例化的过程,在平时代码开发过程中,我们用 Class 类实例化对象的操作比较多。我们可以根据一个类路径(“包.类”)的字符串来获取到一个实例化对象。
Java实例化对象详解
说明
在
语法
类名 对象名称 = (类名)Class对象.newInstance(); //无参构造函数创建
类名 对象名称 = (类名)Class对象.newInstance(参数1,参数2...); //有参构造函数创建对像
案例
我们首先定义一个类供创建对象,它里面有一个无参构造函数,一个有参构造函数
package com.haicoder.net.cls;
public class PersonForClass{
private Integer age;
private String name;
public Integer getAge(){
return age;
}
public void setAge(Integer age){
this.age = age;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public PersonForClass(){
}
public PersonForClass(Integer age, String name){
this.age = age;
this.name = name;
}
@Override
public String toString(){
return "PersonForClass{" +
"name=" + name +
", age='" + age + '\'' +
'}';
}
}
定义一个测试类
package com.haicoder.net.cls;
import java.lang.reflect.Constructor;
public class ClassTest{
public static void main(String[] args){
System.out.println("嗨客网(www.haicoder.net)");
Class> constructClass = null;
try {
constructClass = Class.forName("com.haicoder.net.cls.PersonForClass");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
System.out.println("========无参构造函数开始======");
PersonForClass personForClass = (PersonForClass) constructClass.newInstance();
personForClass.setAge(100);
personForClass.setName("嗨客网");
System.out.println("无参构造函数打印结果:" + personForClass.toString());
} catch (Exception e) {
e.printStackTrace();
}
try {
System.out.println("=============有参构造函数开始===========");
//获取全部构造方法,构造方法的顺序与代码里面的顺序一致
Constructor> cons[] = constructClass.getConstructors();
PersonForClass personForClass2 = (PersonForClass) cons[1].newInstance(200, "嗨客网");
System.out.println("有参构造函数打印结果:" + personForClass2.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
运行结果如下:
我们可以看到通过 newInstance 方法和类强转可以创建对象。使用 newInstance() 的时候,必须要有无参的构造函数的,不然类对象获取不到,识别不了创建对象,会抛出异常。
Java Class类使用总结
通过 Class 的 newInstance 方法,我们可以创建我们想要的对象。不过还是要依赖于构造方法的,一般建议在定义类的时候需要定义一个无参的构造方法。
在定义对象的时候,我们可以使用 getConstructors 将所有的构造方法获取出来,然后按照类里面定义的顺序使用构造方法来创建对象。