test.DBUser$$EnhancerByCGLIB$$40e99a2d
gibi sınıflar dynamic proxies'dur. “Gerçek sınıfın arkasındaki” kavramı çoğu durumda pek anlamlı değildir. Bir vekil her oluşturulduğunda, Hazırda Beklet gibi tanımladığı herhangi bir sınıfın örneği olabilir. soran Sen ne gerçekten
{ Class<Proxy>, Class<RealObject>}
arasında Map
durağandır. Böyle bir şeye inanmam ya da buna ihtiyaç olduğuna inanıyorum.
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 }
Gerçek sınıf almak için statik bir harita arama yapmak çok daha ucuz olurdu ama hazırda uygulama sınıfıyla almak için her yolu tembel başlatıcısı gider: Sadece Hibernate.getClass()
kaynağı bak.
Neden buna ilk olarak ihtiyacınız var? Proxy, temel sınıfınızı genişletir, bu nedenle temel sınıfın bir örneğinde çağırabileceğiniz her yöntem de proxy'de çağrılabilir ve aynı şeyi geri döndürür. –
Bunu, hazırda bekletilen nesnelerin GSON kitaplığına geçirilmesiyle ilgili başka bir soru için araştırıyordum. Kütüphane, uygulayıcıları "Sınıf" vekili ve ancak daha sonra "Nesne" vekili aracılığıyla geçiren bazı çağrılar yapar ve "Sınıf" ile bir şeyler yapmaya başlamak istedim. – Flavio