私はGroupManagerのようないくつかの 'マネージャ'クラスを持っています。これらのマネージャはすべてシングルトンです。Javaジェネリック、シングルトン、静的メソッド
インスタンス化のために、この方法を使用する:私は考えている
private static GroupManager groupManager = null;
private GroupManager()
{
}
public static GroupManager Instance()
{
if (groupManager == null)
{
groupManager = new GroupManager();
}
return groupManager;
}
私は、彼らがコピーされたメソッドの多くを持っているとして、いくつかの継承を使用することを開始する必要があります。
各ManagerのInstance()メソッドは同じです。私は(明らかに)これを行うことができ、継承のためにそう
:
GroupManager extends Manager
のようなもの、すべての管理職のための同じインスタンスメソッドを使用するためにジェネリックを使用することが可能です:私は考えて
public class Manager<E>
{
private static E instance = null;
public static E Instance()
{
if (instance == null)
{
instance = new E();
}
return instance;
}
}
それは理にかなっています:)
それでは、GroupManager.Instance()は通常のように行います。
Javaのジェネリックを使用して欠場しない場合のみ、その細かいので、静的コンテキストで使用されない方法でありますC++テンプレートと同じ!手放す! Java Genericを使用してオブジェクトを割り当てることはできません(つまり、newを呼び出すことはできません)。 "Java Type Erasure"のgoogle検索を試してください – DwB
関連:http://stackoverflow.com/questions/1927789/why-should-i-care-that-java-doesnt-have-reified-generics – BalusC
マネージャ Eはジェネリック型への参照。実行時にのみ既知の型のオブジェクトを割り当てるようにクラスを設定する簡単な方法はありません。 Reid Macの答えは私が試みるものです。 –
DwB