package day16;
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void fun(){
System.out.println("学生");
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
package day16;
public class Teacher {
private String name;
private int age;
public Teacher() {
}
public Teacher(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void fun1(){
System.out.println("老师");
}
@Override
public String toString() {
return "Teacher{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
ClassName=day16.Teacher
methodName=fun1
package day16;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Objects;
import java.util.Properties;
public class demo {
public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException, InstantiationException, IOException, NoSuchMethodException, InvocationTargetException {
ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
InputStream is= systemClassLoader.getResourceAsStream("prop.properties");
Properties prop=new Properties();
prop.load(is);
is.close();
Class clazz=Class.forName(prop.getProperty("ClassName"));
Constructor constructor=clazz.getConstructor();
Object o=constructor.newInstance();
Method method=clazz.getMethod(prop.getProperty("methodName"));
method.invoke(o);
}
}
反射-获取 Constructo对象
public static void main(String[] args) throws NoSuchMethodException, ClassNotFoundException {
System.out.println("---------------------------------");
Class clazz1=Class.forName("a16.Student");
Constructor[] constructors1= clazz1.getConstructors();//获取公有构造方法
for(Constructor constructor1:constructors1){
System.out.println(constructor1);
}
System.out.println("---------------------------------");
Class clazz=Class.forName("a16.Student");
Constructor[] constructors= clazz.getDeclaredConstructors();//获取公有和私有构造方法
for(Constructor constructor:constructors){
System.out.println(constructor);
}
System.out.println("---------------------------------");
Class clazz2=Class.forName("a16.Student");
Constructor constructors2= clazz2.getConstructor();//获取单个构造方法
System.out.println(constructors2);
System.out.println("---------------------------------");
Class clazz3=Class.forName("a16.Student");
Constructor constructors3= clazz3.getDeclaredConstructor();//获取单个构造方法
System.out.println(constructors3);
}
反射-获利用Constructo创建对象
//1.获取class对象
Class clazz = Class.forName("com.itheima.myreflect3.Student");
//2.获取构造方法对象
Constructor constructor = clazz.getConstructor(String.class, int.class);
//3.利用newInstance创建Student的对象
Student student = (Student) constructor.newInstance("zhangsan", 23);
System.out.println(student);