>Java >Java베이스 >Java 반사 메커니즘의 원리는 무엇입니까

Java 반사 메커니즘의 원리는 무엇입니까

coldplay.xixi
coldplay.xixi원래의
2020-10-23 11:04:0747650검색

Java 리플렉션 메커니즘의 원리: 1. 모든 클래스에 대해 이 클래스의 모든 속성과 메서드를 알 수 있으며, 모든 개체에 대해 해당 메서드를 호출할 수 있습니다. 2. 모든 것이 개체이고 클래스도 마찬가지입니다. 3. [Animal.class]가 하드디스크에 있을 때, 메모리에 로드되면 객체로 간주될 수 있습니다.

Java 반사 메커니즘의 원리는 무엇입니까

Java 리플렉션 메커니즘의 원리:

1. 리플렉션 메커니즘의 개념:

은 실행 상태에서 모든 클래스에 대해 이 클래스의 모든 속성과 메서드를 알 수 있음을 의미합니다. 모든 클래스에 대해 객체는 해당 메소드 중 하나를 호출할 수 있습니다. 동적으로 정보를 얻고 객체 메소드를 동적으로 호출하는 기능을 Java 언어의 반사 메커니즘이라고 합니다.

2. 반사 메커니즘의 적용:

동적 에이전트 생성 슬라이싱 프로그래밍(메서드 호출 전후에 스택 프레임 추가)

3. 반사 메커니즘의 원리:

1 우선, 명확한 개념: 모든 것이 객체입니다. 클래스도 객체입니다.

2. 그러면 클래스의 내용을 알아보세요: 수정자 생성자 필드 방법.

3. 둘째, 로딩을 이해하세요: Animal.class가 하드 디스크에 있을 때 메모리에 로드되면 파일이 될 수 있습니다. java.lang이라는 객체로 간주됩니다. 클래스의 객체

프로그램을 실행하면 인스턴스화 중에 Animal.class 객체가 생성됩니다. 이 두 객체의 차이점은 무엇인가요?

아래와 같이 Animal.class 위의 객체는 java.lang.class의 객체입니다. 객체는 Animal.class

Java 반사 메커니즘의 원리는 무엇입니까

4를 인스턴스화하여 생성된 객체입니다. JVM은 어떻게 식별합니까? Animal.class에 포함된 메소드, 멤버 변수, 생성자 등?

아래와 같이 Animal.class 인스턴스화 객체의 멤버 변수는 fur color = red입니다.

메모리에 로드되면 fur color = null,

Java 반사 메커니즘의 원리는 무엇입니까

Animal.class 코트 색상의 속성은 java.lang.class의 필드 속성 값이며, 코트 색상도 java.lang의 객체입니다. .class.Reflection 메커니즘이 동적으로 정보를 획득하고 객체 메소드를 동적으로 호출하는 이유이기도 합니다.

아래 그림은 Java.lang.class의 메소드입니다.

Java 반사 메커니즘의 원리는 무엇입니까

Java 반사 메커니즘의 원리는 무엇입니까Java.lang의 메소드입니다. .class, 코트 색상은 Field의 속성 값이며 Animal, Modifiers의 모든 메소드, 멤버 변수 및 생성자는 java.lang.class의 표준에 따라 작성됩니다. 그렇지 않으면 컴파일 중에 오류가 보고됩니다

Java 반사 메커니즘의 원리는 무엇입니까

4. 방사선 메커니즘의 간단한 예제 코드

public class _14_ReflectTest07
{
     public static void main(String[] args) throws Exception{
         //1.获取类
         Class c = Class.forName("_12_CustomerService");
         //获取某个特定的方法
         //通过:方法名+形参列表
         Method m = c.getDeclaredMethod("login",String.class,String.class);
         //通过反射机制执行login方法.
         Object o = c.newInstance();
         //调用o对象的m方法,传递"admin""123"参数,方法的执行结果是retValue
         Object retValue = m.invoke(o, "admin","123");
         System.out.println(retValue); //true
     }
}
 
 
 
public class _12_CustomerService
{
     //登录
     public boolean login(String name,String pwd){
         if("admin".equals(name) && "123".equals(pwd)){
              return true;
         }
         return false;
     }
     //退出
     public void logout(){
         System.out.println("系统已安全退出!");
     }
}

Java 반사 메커니즘의 원리는 무엇입니까

관련 학습 권장 사항:

java 기본 튜토리얼

위 내용은 Java 반사 메커니즘의 원리는 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.