Yani, bu cevabı "Zor olduğunu" muhtemelen farkındayım ama:Java: çalışma zamanında yeni uygulama türü oluşturulsun mu?
Garip fikrim var ve bu Java gibi bir yöntem oluşturmak mümkün olmadığını merak:
<T> T wrapInterface (Class<T> interfaceClass, T wrappedObject) {
if (mClass.isInterface()) {
//create a new implementation of interfaceClass that, in each method,
//does some action before delegating to wrappedObject
return thatImplementation;
}
}
Temel olarak, eğer benim arayüzüm Foo bir metod foo() tanımladıysa, bu yöntemin böyle bir şeye benzeyen yeni bir sınıf oluşturmasını isterim, bu sınıfın bir örneğini constructor parametresi olarak wrappedObject ile yarattım ve daha sonra :
( ) Gözden geçirmenin sadece aramayı kaydetmekten daha karmaşık olduğunu düşünüyorum, ancak kayıt için fikir yeterlidir. Bunu çok sayıda arayüz türü ile yapmak istiyorum, bu yüzden tüm GeneratedClasses'ı elle yazmam.Ekstra dilbilimsel özellikler (AspectJ veya bu satırlar boyunca bir şeyler getirme) gerektirmeyen bir çözümün bonus puanları ve bu yalnızca standart JDK kitaplıklarıyla mümkün olduğunda çifte bonus puanları.
(ı kesin, Derlenebilir cevabı gerekmez;. Bunu yapmama izin verecek vb aletler/kütüphanelerin sağ setleri/sadece bir işaretçi)
teşekkürler!
Yansıma ekstra dil özelliktir. –
[Dinamik proxy sınıfları] 'na bakmak isteyebilirsiniz (http://docs.oracle.com/javase/7/docs/technotes/guides/reflection/proxy.html). –