Реализация методов из интерфейса, но с другими параметрами

Я ищу хороший способ иметь разные реализации одного и того же метода, который определен в интерфейсе, но с разными типами параметров. Будет ли это возможно?

Чтобы прояснить это, предположим, что у меня есть интерфейс 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
    }
}

Я хотел знать, есть ли лучший способ сделать это. Специально, чтобы избежать длинных -> длинных и длинных -> длинных преобразований. Я видел много подобных вопросов здесь, в StackOverflow, но ни один из них не был тем, что я искал. Заранее большое спасибо.

Ответы на вопрос(2)

Ваш ответ на вопрос