我正在寻找一种很好的方法来获得在接口中定义但具有不同参数类型的相同方法的不同实现.这可能吗?
为了澄清这一点,假设我有一个接口数据库和两个实现类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
}
}
我想知道是否有更好的方法来做到这一点.特别要避免长 – >长和长 – >很长的转换.我在StackOverflow中看到了许多类似的问题,但它们都不是我想要的.非常感谢你提前.