Java Reflection_simple 개인의 변수 및 방법 변경 예제
클래스 demotest {private String name = "123"; public getName () {system.out.println ( "public getName" + name); 반환 이름; } private getName2 () {system.out.println ( "private getName2" + name); 반환 이름; }}예를 들어 이름 값을 변경하십시오. 변화하는 방법. Java 반사를 통해 변화하는 방법
먼저 반사를 사용하여 getName 메소드를 호출하는 방법을 살펴 보겠습니다.
class <demotest> calzz = demotest.class; 생성자 cons = clazz.getConstructor (new class [] {}); // 이것은 클래스 객체를 얻는 생성자입니다. 매개 변수가 구성된 클래스의 객체. 예를 들어 : Demotest는 생성자 메소드 공개 Demotest (String Arg0, String Arg1) {......}을 가지고 있습니다.
현재 생성자 cons = clazz.getConstructor (new Class [] {String.class, String.class}); 두 String.cals는 각각 Arg0 및 Arg1에 해당합니다.
다음은 다음과 같습니다.
demotest test = (demotest) cons.newinstance (new Object [] {}); // 해당 객체를 생성합니다. 매개 변수 new Object [] {}는 구조 방법에 해당하는 매개 변수의 특정 값입니다. 앞에서 언급했듯이 : Demotest test = (demotest) cons.newinstance (new Object [] { "li Che", "Zhang San"}); 다음:
메소드 메소드 = clazz.getMethod ( "getName", new Class [] {String.class}); method.invoke (test, new Object [] { "wang wu"});현재 Wu Wu를 인쇄 할 수 있습니다.
그런 다음 이름 값을 비공개로 변경하는 방법.
1. 먼저 필드를 얻으십시오.
필드 필드 = clazz.getDeclaredfield ( "이름");
2.이 개체의 접근 가능한 플래그를 표시된 부울 값으로 설정하십시오. True의 값은 반사 된 객체가 사용할 때 Java 언어 액세스 점검을 취소해야 함을 나타냅니다. False 값은 반사 된 객체가 Java 언어 액세스 점검을 수행해야 함을 나타냅니다.
field.setAccessible (true);
3. 변수 값을 수정하십시오
field.set ( "이름", "Wang Wu");
좋아요;
개인 방법에 액세스하는 것도 마찬가지입니다.
메소드 메소드 = clazz.getDeclaredMethod ( "getName2"); method.setAccessible (true); method.invoke (test, new Object [] { "wang wu"});GetDeclaredFields를 사용하여 개인 및 공공 보호 분야를 얻으십시오
c.getfields ()를 사용하는 경우; 공공 유형의 속성 만 얻을 수 있습니다
위의 Java Reflection_simple 변수와 비공개로 변경하는 예제는 내가 공유하는 모든 내용입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.