是否有可能在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));
}
1 回答
这有效:
顺便说一句,根据你自己的定义,b.foo(22)会打印0而不是44 .
更新:刚才意识到你的意思是Java - > Scala - > 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类:
?