का उपयोग कर स्कैला में एक विशेषता लागू करने वाली सभी कक्षाएं प्राप्त करें, मैं एक विशेष विशेषता लागू करने वाले सभी केस वर्गों को सूचीबद्ध करना चाहता हूं। मैं वर्तमान में ऐसा करने के लिए Clapper ClassUtil का उपयोग कर रहा हूं। मैं केस कक्षाएं प्राप्त करने में सक्षम हूं जो सीधे एक विशेषता लागू कर रहे हैं। हालांकि, मैं उन अन्य वर्गों को प्राप्त करने में सक्षम नहीं हूं जो सीधे विशेषता को कार्यान्वित नहीं कर रहे हैं। मैं उन सभी वर्गों को कैसे प्राप्त कर सकता हूं जो प्रत्यक्ष या अप्रत्यक्ष रूप से एक विशेषता लागू करते हैं। ?प्रतिबिंब
val finder = ClassFinder()
finder.getClasses().filter(_.isConcrete).filter(_.implements("com.myapp.MyTrait"))
स्काला संस्करण: 2.11
घंटे का लटकन कक्षा util संस्करण: 1.0.6
वहाँ किसी अन्य तरीके से मैं इन जानकारी प्राप्त कर सकते है? क्या कोई मुझे सही दिशा में इंगित कर सकता है? मैंने scala.reflect
का उपयोग करने का प्रयास किया लेकिन यह समझ में नहीं आया कि जानकारी कैसे प्राप्त करें।
EDIT:
नमूना लक्षण और उपयोगों:
trait BaseEntity
trait NamedEntity{ val name:String}
trait MasterDataEntity extends NamedEntity
case class Department(id:Long, override val name:String) extends MasterDataEntity
case class Employee(id:Long, name:String) extends BaseEntity
case class User(id:Long, override val name:String) extends NamedEntity
अब, अगर मैं NamedEntity
के रूप में विशेषता देते हैं, मैं के बाद से वे दोनों प्रत्यक्ष या परोक्ष रूप NamedEntity कार्यान्वित कर रहे हैं दोनों Department
और User
प्राप्त करने में सक्षम होना चाहिए। implements
विधि के साथ, यह केवल उपयोगकर्ता को देगा। मैंने interfaces
विधि का उपयोग करके भी कोशिश की, जो केवल प्रत्यक्ष सुपर क्लास प्रदान करेगा।
क्या आप समस्या का प्रदर्शन करने के लिए तीन लक्षण/कक्षाएं और उनके रिश्ते को परिभाषित कर सकते हैं? –
मैंने नमूना लक्षण और केस क्लास उपयोग जोड़े हैं। –