2011-10-17 9 views
7

मैं जावा से स्कैला में एक ऐप माइग्रेट कर रहा हूं। जावा में मैं जैसेस्कैला में बाध्य जेनेरिक (जैसा कि <ई जावा में MyClass> बढ़ाता है)

abstract class CommonObjectInfo{//...} 
class ConcreteObject extends CommonObjectInfo{//...} 

abstract class AbstractWrapper<E extends CommonObjectInfo>{//...} 
class ConcreteWrapper extends CommonObjectInfo<ConcreteObject>{//...} 

somethng मैं कैसे औपचारिक रूप से "रैपर" स्काला में वस्तुओं को व्यक्त कर सकते है? मैं

उत्तर

9
abstract class CommonObjectInfo 
class ConcreteObject extends CommonObjectInfo 

abstract class AbstractWrapper[E <: CommonObjectInfo] 
class ConcreteWrapper extends AbstractWrapper[ConcreteObject] 
5

सामान्य समाधान agilesteel से एक है, लेकिन कभी कभी यह "अंदर" वर्ग (खासकर जब प्रश्न में प्रकार एक कार्यान्वयन विस्तार माना जाता है) प्रकार की जानकारी को खींचने के लिए उपयोगी होता है:

abstract class CommonObjectInfo 

class ConcreteObject extends CommonObjectInfo 

abstract class AbstractWrapper{ 
type objectInfo <: CommonObjectInfo 
} 

class ConcreteWrapper { 
    type objectInfo = ConcreteObject 
} 
संबंधित मुद्दे