从接口实现方法但具有不同的参数

我正在寻找一种很好的方法来获得在接口中定义但具有不同参数类型的相同方法的不同实现。 这可能吗?

为了澄清这一点,假设我有一个接口数据库和两个实现类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中看到了许多类似的问题,但它们都不是我想要的。 非常感谢你提前。

这是generics的一个例子

数据库

 public interface Database { public T createNode(...); public void modifyNode(T id, ...); ... } 

数据库1

 class Database1 implements Database { @Override public Long createNode(...) { ... long result = // obtain id of created node return result; } @Override public void modifyNode(Long id, ...) { ... // use id } } 

DATABASE2

 public class Database2 implements Database { @Override public SomeObject createNode(...) { ... SomeObject result = // obtain id of created node return result; } @Override public void modifyNode(SomeObject id, ...) { ... // use id as (SomeObject)id } } 

顺便说一句,不要担心自动装箱 。 您正在使用JDK> = 5,因为有@Override注释。

我想你想要通用方法 。

通用方法是引入其自己的类型参数的方法。 这类似于声明generics类型,但类型参数的范围仅限于声明它的方法。 允许使用静态和非静态generics方法,以及generics类构造函数。

generics方法的语法包括一个类型参数,在尖括号内,并出现在方法的返回类型之前。 对于静态generics方法,类型参数部分必须出现在方法的返回类型之前。