【发布时间】:2014-12-10 10:08:51
【问题描述】:
假设我有一个接口和实现:
public interface ITest {
}
public TestClass implements ITest {
}
在我的代码中,我有一些方法:
public void pass(ITest testObject) {
//
}
在事先不知道我在上面的方法中处理ITest的什么实现的情况下,我如何转换为TestClass?例如,在上述方法中,我可以进行演员 ((TestClass)testObject) 但这需要事先了解实现,我希望您假设我没有。 (我知道我可以检查所有 instanceof 并转换为正确的实现,但我不想这样做)。
我希望像testObject.getImplementation() 这样的东西返回一个TestClass 实例当且仅当testObject 是一个instanceof 类TestClass (如果ITest 也是任何其他实现)。
【问题讨论】:
-
您为什么要想要投射到
TestClass?如果你在你的方法中事先不知道这个类,你想用它做什么?我怀疑如果你进一步思考你正在尝试做什么,你会发现其他问题。 -
如果你想投,那你为什么要使用界面呢?
标签: java types interface casting