자바 반사 메커니즘 초보 인식 획득 멤버 변수
2652 단어 자바 기반
그렇다면 이 Class 대상 을 어떻게 얻 습 니까?보통 다음 과 같은 몇 가지 방법 이 있다.
1.하나의 인 스 턴 스 를 얻 었 다 면 다음 과 같은 방식 으로 Class 대상 을 얻 을 수 있 습 니 다.
Class c = 대상 이름.getClass();
학생 s = new Student();
Class c = s.getClass();
Class c2 = s.getSuperclass();
2.컴 파일 기간 에 클래스 의 이름 만 알 고 있다 면 다음 과 같은 방법 을 사용 할 수 있 습 니 다(이것 도 반사 입 니 다.
클래스 를 가 져 올 클래스 대상):
Class c = Student.class;
3.클래스 이름 이 컴 파일 기간 에 모 르 면, 하지만 운행 기간 에 얻 을 수 있 습 니 다. 아래 방법 을 사용 할 수 있 습 니 다:
Class c = Class.forName(str);//여기 str 는 클래스 의 전체 경로 입 니 다.
다음 과 같은 모든 구성원 변 수 를 어떻게 가 져 오 는 지 살 펴 보 겠 습 니 다.
Student.java:
public class Student {
/** */
public static String id = "20140210102";
/** */
public String name = " ";
/** */
public int address = 18;
/** */
protected long phone = 18765342152L;
/** */
private boolean ispp = false;
public Student() {
}
}
Test.java
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
public class Test {
public static void main(String[] args) throws Exception {
Student s = new Student();
/*
* ,
* ①. getFields(), public ,
* ②. getDeclaredFields(), , 。
*/
Field[] fs = Student.class.getDeclaredFields();
for (int i = 0; i < fs.length; i++) {
Field f = fs[i];
f.setAccessible(true);// ,
/*
* :
*
* Field Java ( public,private,protected
* ,default,static,final )
*/
int memberMod = f.getModifiers();
//
System.out.print(Modifier.toString(memberMod) + " ");
// ( or , , )
String memberType = f.getGenericType().toString().intern();
System.out.print(memberType + " ");
//
String memberName = f.getName();
System.out.print(memberName + " ");
//
System.out.print(f.get(s) + "
");
}
}
}
운행 결과:public static class java.lang.String id 20140210102 public class java.lang.String name 장삼 int address 18 protected long phone 18765342152 private boolean ispp false 는 이 예 를 통 해 자바 초보 자의 인식 반사 에 어느 정도 도움 이 되 기 를 바 랍 니 다.다음 편 은 반 사 를 통 해 멤버 를 얻 는 방법 을 살 펴 보 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
범용 용법 예시앞으로 51CTO 에 정착 해 기술 개발 에 전념 할 테 니 잘 부탁드립니다.다음 코드 는 자신 이 (저자: 이 흥 화) 를 공부 할 때 두 드 린 코드 로 주석 이 완비 되 어 있다. 범용 클래스 Point. ja...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.