3

インターフェイスで定義されているが、パラメーターの型が異なる同じメソッドの異なる実装を持つ良い方法を探しています。これは可能でしょうか?

これを明確にするために、インターフェイス Database と 2 つの実装クラス Database1 および Database2 があるとします。データベースにはメソッド createNode(...) と別のメソッド modifyNode(...) があります。問題は、Database1 の場合、createNode メソッドの戻り値の型が long (識別子) でなければならないことです。ただし、Database2 の場合は、テクノロジー固有のオブジェクトになります (この場合は OrientDB ですが、これはあまり重要ではありません。もちろん、単にオブジェクトを拡張するものです)。また、両方の create(...) 戻り値の型は、modifyNode(...) パラメータの 1 つとして使用する必要があります。

私がやろうと思っていたことは次のとおりです。

`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で同様の質問をたくさん見ましたが、探していたものはありませんでした。事前にどうもありがとうございました。

4

2 に答える 2