Class类动态加载类的用法
Class.forName(“类的路径”)
不仅仅表示了类的类型,还表示了动态加载类。输入类的路径,就可以获取到类的方法。在这里要区分编译和运行:
- 编译时加载类静态加载类
- 运行时加载类动态加载类
静态加载类
new创建对象是 静态加载类,在编译时就需要加载可能使用的类。
问:那么我们能不能在使用到类就进行加载?
答:使用动态加载类就可以完成。
举例:
Student student = new Student();
student.getStart();
动态加载类
Teacher 和 Student 类必须实现 Person 接口,并重写start 方法。
举例:
分别创建两个类:
public class Teacher implements Person{
@Override
public void getStart() {
System.out.println("Teacher>>" + Teacher.class.toString());
}
}
public class Student implements Person {
@Override
public void getStart() {
System.out.println("Student>>" + Student.class.toString());
}
}
并实现接口 Person,重写 start 方法:
public interface Person {
void getStart();
}
运行一下测试类:
public class StudentTest {
@Test
public void getStart() {
getStudent("com.java.Student");
}
public void getStudent(String url) {
try {
Class<?> aClass = Class.forName(url);
Person person = (Person) aClass.newInstance();
person.getStart();
} catch (Exception e) {
e.printStackTrace();
}
}
}
打印结果:
Student>>class com.java.Student