Я ищу хороший способ иметь разные реализации того же метода, который определен в интерфейсе, но с разными типами параметров. Возможно ли это?Реализация методов из интерфейса, но с различными параметрами
Чтобы уточнить это, предположим, что у меня есть база данных интерфейса и два класса реализации Database1 и Database2. У базы данных есть метод createNode (...) и еще один editNode (...). Проблема в том, что для Database1 возвращаемый тип метода createNode должен быть длинным (идентификатором). Однако для Database2 это будет объект, специфичный для этой технологии (в данном случае OrientDB, но это не имеет большого значения, это просто то, что расширяет Object, конечно). А также оба типа (...) возвращаемых типов должны использоваться как один из параметров editNode (...).
То, что я думал сделать, это:
`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 and long -> Long conversion. Я видел много подобных вопросов здесь, в StackOverflow, но ни один из них не был тем, что я искал. Заранее большое спасибо.
* Различные реализации того же метода, которые определены в интерфейсе, но с разными типами параметров * Нет – NINCOMPOOP
Вам нужны дженерики. – SLaks