【发布时间】:2013-04-14 10:16:39
【问题描述】:
我正在寻找一种很好的方法来实现同一方法的不同实现,该方法在接口中定义但具有不同的参数类型。这可能吗?
为了澄清这一点,假设我有一个接口 Database 和两个实现类 Database1 和 Database2。数据库有一个方法 createNode(...) 和另一个 modifyNode(...)。问题是对于 Database1,createNode 方法的返回类型应该是 long(标识符)。然而,对于 Database2,它将是一个特定于技术的对象(在这种情况下是 OrientDB,但这并不重要,它只是扩展 Object 的东西,当然)。并且两个 create(...) 返回类型都应该用作 modifyNode(...) 参数之一。
我想做的是:
`public interface Database {
public Object createNode(...);
public void modifyNode(Object id, ...);
...
}`
public class Database1 {
@Override
public Object createNode(...) {
...
long result = // obtain id of created node
return Long.valueOf(result);
}
@Override
public void modifyNode(Object id, ...) {
...
// use id as ((Long)id).longValue();
}
}
public class Database2 {
@Override
public Object createNode(...) {
...
SomeObject result = // obtain id of created node
return result;
}
@Override
public void modifyNode(Object id, ...) {
...
// use id as (SomeObject)id
}
}
我想知道是否有更好的方法来做到这一点。特别要避免 Long -> long 和 long -> Long 转换。我在 StackOverflow 中看到了很多类似的问题,但没有一个是我想要的。非常感谢您。
【问题讨论】:
-
接口中定义的同一方法的不同实现,但参数类型不同否
标签: java oop polymorphism