> Java > java지도 시간 > Java Reflection이 지역 변수의 이름을 공개할 수 있습니까?

Java Reflection이 지역 변수의 이름을 공개할 수 있습니까?

DDD
풀어 주다: 2024-12-20 09:30:11
원래의
931명이 탐색했습니다.

Can Java Reflection Reveal the Names of Local Variables?

Java Reflection: 지역 변수의 이름 공개

Java 영역에서 리플렉션은 개발자에게 클래스를 검사하고 조작할 수 있는 능력을 부여합니다. 그리고 그들의 속성. 한 가지 흥미로운 질문이 자주 제기됩니다. 지역 변수의 정체성을 밝히기 위해 깊이 있는 반사를 탐구할 수 있습니까?

원래 문의에서 언급했듯이 다음 코드 조각을 고려해 보겠습니다.

Foo b = new Foo();
Foo a = new Foo();
Foo r = new Foo();
로그인 후 복사

우리의 임무는 각 변수와 관련된 이름을 추출하여 인쇄하는 방법을 고안하는 것입니다. 적절하게 baz라고 명명된 지정된 메서드는 다음과 유사합니다.

public void baz(Foo... foos) {
    for (Foo foo: foos) {
        System.out.println(***); // To be filled
    }
}
로그인 후 복사

솔루션에 대한 탐구는 우리를 바이트코드 분석의 영역으로 이끈다. Java 8 이전에는 이러한 정보가 최적화 조치로 클래스 파일에서 제거되었습니다. 그러나 바이트코드 자체 내에는 이러한 파악하기 어려운 이름에 대한 열쇠를 쥐고 있는 로컬 변수 테이블 속성이 남아 있습니다.

ASM과 같은 바이트코드 엔지니어링 라이브러리는 희망의 등불로 등장하여 이 귀중한 데이터에 대한 액세스를 약속합니다. 보다 접근하기 쉬운 솔루션을 찾는 안목 있는 개발자를 위해 Xalan 및 Excalibur와 같은 프레임워크는 편리한 검사를 위한 추상화 계층을 제공합니다.

Java 8 및 그 이상: 부분 가시성

A Java 8의 출현으로 중요한 이정표에 도달하여 우리가 달성하기 어려운 목표에 대한 부분적인 지원을 도입했습니다. 지역 변수의 특수한 형태인 매개변수 이름은 리플렉션을 통해 액세스할 수 있게 되었습니다. 이 새로 발견된 기능은 @ParameterName 주석을 보강하여 보다 강력한 종속성 주입 프레임워크를 개발하는 데 도움이 됩니다.

로컬 변수 이름 지정에 대한 전체 그림은 아직 파악하기 어렵지만 Java 8의 발전은 향후 발전을 약속합니다. Java 언어가 계속 발전함에 따라 우리는 성찰과 변수 내성 영역의 새로운 개척을 간절히 기대하고 있습니다.

위 내용은 Java Reflection이 지역 변수의 이름을 공개할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿