자바 반사 day 04
11319 단어 자바 웹 학습 정리
반사 원리
(day04reflection)
demo01.java
demo01.class
Class 클래스:class 바이트 파일 은 메모리 에 있 는 클래스 클래스 를 얻 으 면 모든 내용 을 얻 을 수 있 습 니 다.그래서 반 사 를 사용 해 야 합 니 다.
2.반사 조작 류 사용
Class class1 = Person.class; // .class
Class class2 = new Person().getClass(); // .getClass()
Class class3 = Class.forName("day04reflection.Person");
// class.forName(" ")
Class class1 = Class.forName("day04reflection.Person");
// Person
Person person = (Person) class1.newInstance();
person.setAge(2);
System.out.println(person.getAge());
Class class1 = Class.forName("day04reflection.Person");
//class1.getConstructors(); //
Constructor c1 = class1.getConstructor(String.class,int.class,String.class);
Person person = (Person) c1.newInstance("zhang",23,"99");
System.out.println(person.toString());
try {
Class class1 = Class.forName("day04reflection.Person");
//class1.getDeclaredFields();//
Person person = (Person) class1.newInstance();
Field name = class1.getDeclaredField("name");
// /
name.setAccessible(true);
name.set(person,"Chapman");
System.out.println(person.getName());
} catch (Exception e) {
e.printStackTrace();
}
Class class1 = Class.forName("day04reflection.Person");
Method setName = class1.getDeclaredMethod("setName", String.class);
Person person = (Person) class1.newInstance();
setName.invoke(person,"right");
Class class1 = Class.forName("day04reflection.Person");
Method setName = class1.getDeclaredMethod("statics", String.class);
Person person = (Person) class1.newInstance();
setName.invoke(null,"right");