我刚刚完成scala中一个相对较大的项目,很快就会启动另一个相关的项目.
我还没有选择这种语言,并希望我的决定更多地基于语言或可用库的功能,而不是互操作性问题.
这就是问这个的原因.
我的要求是(最重要的是):
不要用文字描述问题,而是让我向你展示一个Scala Interpreter会话,它展示了我想要做的事情.
scala> class A extends Parent{
| def name = "Alex"
| }
defined class A
scala> class B extends Parent{
| def name = "Bernardo"
| }
defined class B
scala> def addFamilyName[T <: Parent](fn:String, c:T{def name():String}) = c.name + " " + fn
addFamilyName: [T <: Parent](fn: String, c: T{def name(): String})java.lang.String
scala> addFamilyName( "Martins", new A())
<console>:11: error: type mismatch;
found : A
required: ?{def name(): String}
addFamilyName( "Martins", new A())
^
Run Code Online (Sandbox Code Playgroud)
所以基本上我想在参数中定义一个类型,它既是某个类型的子类,也包含一个带签名的方法 def name():String. …