我读了这个问题并认为如果有人可以写的话很容易解决(不是没有它可以解决):
@Override
public String toString() {
return super.super.toString();
}
Run Code Online (Sandbox Code Playgroud)
我不确定它在许多情况下是否有用,但我想知道为什么它不是,如果这样的东西存在于其他语言中.
你们有什么感想?
编辑: 澄清:是的,我知道,这在Java中是不可能的,我不会真的错过它.这不是我期望的工作,并且惊讶于编译错误.我刚才有了这个想法并想讨论它.
我有一堆实现通用接口的类:Command.
这一堆课程转到了Map.
为了使Map正常工作,我需要每个实现Command的类来覆盖该Object.equals(Object other)方法.
没关系.
但我想强迫平等的压倒一切.=>当实现命令的东西不重写等于时出现编译错误.
这可能吗?
编辑:BTW,我还需要强制重写哈希码...
我试图用一个抽象的成员覆盖一个特征成员,这似乎很简单,但实际上不会编译.
这是我正在尝试做的一个简单的例子:
// not my code:
trait Base {
val x = new T {}
trait T {}
}
// my code:
trait Sub extends Base {
// compile error; see below
override val x: T2
// this compiles, but doesn't force `Impl` to implement `x`
// override val x: T2 = null
trait T2 extends T {
val someAddition: Any
}
}
object Impl extends Sub {
// should be forced to implement `x` of type `T2`
}
Run Code Online (Sandbox Code Playgroud)
这是编译器错误: …