是否可以在Scala类中创建一个方法,扩展类A,通过另一个类B扩展类A并实现特征?
public class A {
public int foo(int someData) {
return -1;
}
}
如果我使用Scala类扩展特征,则会调用特征中的方法。在java中它没有。
trait T extends A {
override def foo(int: someData) = {
if data < 10 {
return data * 2
} else {
return 0
}
}
}
这是我从下面调用foo()的类:
public class B extends A implements T {}
这应该打印44而不是-1
public class Main {
B b = new B();
System.out.println(b.foo(22));
}
答案 0 :(得分:0)
这有效:
scala> trait A {
| def foo(someData:Int) = -1
| }
defined trait A
scala> trait T extends A {
| override def foo(someData:Int) = if (someData<10) someData*2 else 0
| }
defined trait T
scala> class B extends T
defined class B
scala> val b = new B
b: B = B@4e009c5e
scala> b.foo(3)
res4: Int = 6
顺便说一下,根据你自己的定义,b.foo(22)会打印0而不是44。
更新:刚才意识到你的意思是Java - &gt; Scala - &gt; Java继承。我的回答只与Scala有关。原则上同样应该适用于Java(在这个答案中更多关于它:Using Scala traits with implemented methods in Java以及此处:http://lampwww.epfl.ch/~michelou/scala/using-scala-from-java.html) - 具有方法实现的特征应该被转换为Java作为接口和特征方法实现为抽象类。
您是否尝试在java中创建B类:
public class B implements T {}