Java 베이스-반사 메커니즘
반사는 우리로 하여금 유연한 코드를 쉽게 만들 수 있게 한다. 이 코드들은 실행할 때 조립할 수 있으며, 구성 요소 간에 원본 코드 링크를 할 필요가 없다.반사는 우리가 작성하고 실행할 때 원본 코드에서 선택한 클래스 협업 코드가 아니라 JVM에 불러온 클래스의 내부 정보를 코드에 접근할 수 있도록 합니다.
반사 메커니즘 작용
반사 메커니즘 획득 클래스의 세 가지 방식
Class c1 = Class.forName("com.webb.basis.reflect.Demo"); //
Class c2 = Demo.class;
Class c3 = new Demo().getClass();
객체 만들기: 클래스를 가져오면 newInstance () 를 사용하여 객체를 만듭니다.c1.newInstance(); // Demo
속성 가져오기
//
Field[] fields = c1.getDeclaredFields();
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append(Modifier.toString(c1.getModifiers()) + " class " + c1.getSimpleName() + "{
");
for (Field field : fields) {
stringBuffer.append("\t");
stringBuffer.append(Modifier.toString(field.getModifiers()) + " ");
stringBuffer.append(field.getType().getSimpleName() + " ");
stringBuffer.append(field.getName() + ";
");
}
stringBuffer.append("}");
System.out.println(stringBuffer);
//
Field field = c1.getDeclaredField("name"); //
획득 방법 및 구성 방법
getDeclaredMethods()
getReturnType()
getParameterTypes()
getDeclaredMethod()
getDeclaredConstructors()
getDeclaredConstructor()
setAccessible(true);속성에 대한 접근 권한을 설정합니다. 클래스의 변수가private일 때 이 항목을 설정해야 합니다.
이상은 본문의 전체 내용입니다. 본고의 내용이 여러분의 학습이나 업무에 일정한 도움을 줄 수 있는 동시에 저희를 많이 지지해 주시기 바랍니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.