찾다

 >  Q&A  >  본문

java中可以通过类的class属性得到该类的字节码文件对象?


Class c1 = Student.class;
可是无论是Student类还是它继承的Object类都没有class属性呀?

ringa_leeringa_lee2803일 전591

모든 응답(2)나는 대답할 것이다

  • 巴扎黑

    巴扎黑2017-04-18 10:52:41

    초대해주셔서 감사합니다.

    먼저 오류를 수정하세요. 클래스는 Student 클래스의 정적 멤버가 아니라 키워드입니다. .class는 Java의 특정 구문입니다.

    둘째, 이 클래스의 바이트코드 파일을 얻으려면 파일 시스템으로 가서 찾아야 하는데, 이는 매우 번거로운 Student.class.getResource/getResourceAsStream과 같은 메소드에 지나지 않습니다. asm, cglib 등의 바이트코드 오픈소스 프로젝트를 살펴보는 것이 좋습니다.

    마지막으로 바이트코드는 상대적으로 복잡한 기술이므로 메소드 매개변수에서 Annotation을 얻는 등 최후의 수단으로 사용해야 합니다(Spring Web MVC 참조). 바이트코드와 관련이 있는 것처럼 보이는 일부 기술은 실제로 우회될 수 있습니다. 예를 들어 인터페이스 기반 AOP는 바이트코드 대신 프록시를 사용하여 구현할 수 있습니다.

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-04-18 10:52:41

    제가 확인한 한 가지 이론은 이것이 키워드가 아니라 리터럴 값이라는 것입니다. IDE에서 직접 "Student.class"를 입력해 보면 이 값을 변수에 할당해야 한다는 것을 알 수 있습니다. . 나중에 새로운 것을 찾으면 추가하겠습니다. 클래스 로딩에 대해서는 내 블로그 Customized Class Loader - Reading from .class and .jar

    를 참조하세요.

    회신하다
    0
  • 취소회신하다