我有一个用例,我需要对象String在toString()方法中提供合理的输出(不是默认Object.toString()输出).我正在考虑toString()通过Interface契约实施方法实现.
就像是,
interface TestInterface {
public String toString();
}
class TestClass implements TestInterface {
// But there's no need to implement toString() since it's already present as part of Object class.
}
Run Code Online (Sandbox Code Playgroud)
但是在评论中,它并没有强制实施该toString()方法.
我有2个解决方法,
使接口成为一个抽象类,
abstract class TestInterface {
public abstract String toString();
}
class TestClass extends TestInterface {
// You will be enforced to implement the toString() here.
}
Run Code Online (Sandbox Code Playgroud)
但这似乎只是为了提供合同而过度杀伤.这也意味着该课程不能从任何其他课程延伸.
将方法名称更改为其他名称.
interface TestInterface {
public String toSensibleString();
}
class TestClass implements TestInterface {
// Should implement it here.
}
Run Code Online (Sandbox Code Playgroud)
但这意味着,那些已经覆盖该toString()方法的类需要有一个不必要的方法.此外,它只意味着那些了解接口的类将获得正确的String.
那么,有没有办法提供(重新)实现现有方法的合同?
您无法Object从接口强制执行此类方法.你不应该.依靠Object.toString()不是一个好主意.这是你最好的方法:
interface TestInterface {
public String toSensibleString();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
127 次 |
| 最近记录: |