test.DBUser$$EnhancerByCGLIB$$40e99a2d
과 같은 클래스는 dynamic proxies입니다. "진짜 계급 뒤에"의 개념은 대부분의 경우별로 의미가 없습니다. 프록시가 생성 될 때마다, 그것은 Hibernate가 정의한대로 모든 클래스의 인스턴스 일 수있다.
당신이 무엇입니까 정말 묻습니다 것은 Map
의 { Class<Proxy>, Class<RealObject>}
입니다. 나는 그런 것이 없다고 믿지 않는다. 나는 이것을 필요로한다고 믿는다.
이
339 public static Class getClass(Object proxy) {
340 if (proxy instanceof HibernateProxy) {
341 return ((HibernateProxy) proxy).getHibernateLazyInitializer()
342 .getImplementation()
343 .getClass();
344 }
345 else {
346 return proxy.getClass();
347 }
348 }
실제 수업을받을 수있는 정적지도 검색을 할 훨씬 저렴,하지만 Hibernate는 구현 클래스를 얻기 위해 모든 방법 게으른 초기화로 이동 : 그냥 Hibernate.getClass()
의 소스를 봐주세요.
왜 처음부터이 것이 필요합니까? 프록시는 기본 클래스를 확장하므로 기본 클래스의 인스턴스에서 호출 할 수있는 모든 메서드를 프록시에서 호출 할 수 있으며 동일한 결과를 반환합니다. –
최대 절전 모드 프록시 개체를 GSON 라이브러리에 전달할 때 또 다른 질문으로이 문제를 조사했습니다. 라이브러리는 구현 자에게 프록시'Class'를 전달하는 호출을 만들고, 나중에 단지 객체'Object'를 호출하고,'Class'를 사용하여 무언가를 할 수 있기를 원합니다. – Flavio