反射常用的几种方式

反射的基本使用

package reflection;
public class 反射 {
public static void main(String[] args) throws ClassNotFoundException {
//通过反射获取类的Class对象
Class c1= Class.forName(“reflection.User”);
Class c2= Class.forName(“reflection.User”);
Class c3= Class.forName(“reflection.User”);
//一个类在内存中只有一个Class对象
//一个类被加载之后,类的整个结构都会被封装在Class对象中,可获得类中所有信息
System.out.println(c1.hashCode()+"–"+c2.hashCode()+“c3:”+c3.hashCode());
}
}
class User{
private String name;
private int id;
private int age;
public User() {}
public User(String name, int id, int age) {
super();
this.name = name;
this.id = id;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return “User [name=” + name + “, id=” + id + “, age=” + age + “]”;
}

}

**

反射的创建方式

**

package reflection;
public class 反射的创建方式 {
public static void main(String[] args) throws ClassNotFoundException {
Person person =new Student();
System.out.println(“这个人是:”+person);
//方式一:通过对象获得
Class c1=person.getClass();
System.out.println(c1.hashCode());
//方式二 :通过forName获得
Class c2=Class.forName(“reflection.Student”);
System.out.println(c2.hashCode());
//方式三:通过类名.class获得
Class c3=Student.class;
System.out.println(c3.hashCode());
//获得方式四:基本内置类型的包装类都有一个Type属性,通过它
Class c4= Integer.TYPE;
System.out.println(c4);
//获得父类的类型
Class c5=c1.getSuperclass();
System.out.println(c5);
}
}

class Person{
String name;
public Person() {
}
public Person(String name) {
super();
this.name = name;
}
}
class Student extends Person{
public void Student() {
this.name=“学生”;
}
}
class Teacher extends Person{
public void Teacher(){
this.name=“老师”;
}
}

猜你喜欢

转载自blog.csdn.net/l_iulei/article/details/106911876