Özel bir ClassLoader kullanarak çalışma zamanında bazı (proxy) sınıfları üreten bir Java çerçevesiyle çalışıyorum. Özel ClassLoader öğesinin loadClass (..) 'dan bu sınıfa karşılık gelen ham bayt dizisinden döndürdüğü herhangi bir sınıfı almak istiyorum. Mümkün mü? Bir sınıf bir kaynak olarak mevcutsa, sınıfı bir ikili biçimde yüklemek için bir girdi akışı kullanabilirsiniz, ancak sınıf çalışma zamanında üretilirse bunu nasıl yapabilirim?Çalışma zamanında oluşturulan bir sınıf için baytları alın
cevap
bir ClassFileTransformer kaydedin. Baytları değiştirmek yerine, ihtiyacınız olan verileri kaydedin.
Evet, aslında birkaç hafta önce bunu yapıyorduk. İşe yarıyor. – user66237
Özel ClassLoader'ı kendi başınıza değiştirirseniz, ham baytları kendiniz kaydetmek için bazı mekanizmalar ekleyebilirsiniz.
ClassLoader'daki sınıflar defineClass() yöntemi tarafından oluşturulur. Zaten bir özel sınıf yükleyiciniz varsa, tüm defineClass() yöntemlerini geçersiz kılabilirsiniz. Bu yönteme, sınıfın baytlarını içeren bir bayt [] geçirilir. Bunları saklayın ve daha sonra bunlara erişmek için uygulamanıza ihtiyaç duyabilirsiniz.
Daha fazla bilgi için [defineClass() Java Dokümantasyonu] [1] konusuna bakın.
[1]: http://java.sun.com/javase/6/docs/api/java/lang/ClassLoader.html#defineClass(java.lang.String, bayt [], int int)
Tüm defineClass yöntemleri kesindir. –
- 1. Çalışma zamanında bir Sınıf için belirli bir Özellik Ekleme
- 2. Çalışma zamanında Hazırlama Profilinin EXPIRATION tarihini alın.
- 3. Çalışma zamanında
- 4. Çalışma zamanında bir Object ile ilgili başvuruların miktarını alın
- 5. Spring Boot yönetim bağlantı noktasını çalışma zamanında alın. management.port = 0
- 6. Çalışma zamanında dize olarak parametreler alın (Scala 2.11)
- 7. Yay Batch: çalışma zamanında tanımlanan işlerin listesini alın
- 8. Çalışma zamanında XAML yükleniyor?
- 9. Çalışma zamanında düzen yüksekliğini ve genişliğini alın android
- 10. Çekirdeği çalışma zamanında değiştirin
- 11. Çalışma zamanında görüntü ekleme
- 12. çalışma zamanında dinamik
- 13. Çalışma zamanında Java-Bayt Kodunu yükle
- 14. Çalışma zamanında bir makro değerini değiştirme
- 15. Javadoc mevcut olmayan bir sınıf için oluşturulan
- 16. Çalışma zamanında menü değiştirme
- 17. Delphi'deki tüm Sınıf Yardımcılarını çalışma zamanında RTTI kullanarak bulun.
- 18. Çalışma zamanında montaj için bir sınıf dosyası yüklemenin bir yolu var mı?
- 19. Çalışma zamanında Ehcache önbellek boyutu
- 20. Çalışma zamanında dosya uzantısını değiştirme
- 21. Çalışma zamanında bir dize düzenlemeye çalışılıyor
- 22. Bileşenleri bir JPanel'e çalışma zamanında nasıl ekleyebilirim
- 23. WebService uç nokta adresini çalışma zamanında değiştirin
- 24. Çalışma zamanında Clojure "sabitlerini" ayarlama
- 25. Çalışma zamanında sql_mode nasıl değiştirilir
- 26. Luigi - Unilfilled% s çalışma zamanında
- 27. knockout.js çalışma zamanında yükleme şablonları
- 28. Yansıma.emit kullanarak çalışma zamanında bir yöntem oluşturma
- 29. multi select ctrl + düğmesi çalışma zamanında tıklayın
- 30. Çalışma zamanında Guice bağlarının değiştirilmesi
Özel sınıf yükleyicinin kaynağına erişiminiz yok mu? – stacker