2017-08-16 14 views
-5

を取得するために、ジェネリックを使用して:Javaは、私はいくつかの静的メンバーと静的クラスを持つすべてのインスタンスのリスト

public static class Foo { 
private static Bar one = new Bar(); 
private static Bar two = new Bar(); 
private static Bar three = new Bar(); 
... 
private static Bar n = new Bar(); 
} 

私はすべてのBarを返すメソッドを持つようにしたい:

public static List<Bar> getBars()

できますが、 Javaジェネリックスを使用してすべてのインスタンスを取得する方法を教えてください。

+1

ジェネリックはここであなたを助けないと得ることができます。あなたはそれらを最初からリストに入れていません。 – Makoto

+3

なぜこれらを別々の名前のバーに分けて始めていますか?あなたはあなたが望むだけ多くのことを持つことができるように、それらをすべてリストに入れるべきです。また、これらの変数をすべて持っている場合になぜ静的クラスを使用しているのかもわかりません。 – JoshKopen

+1

あなたがしようとしているものを投稿すれば、私はあなたがそれをよりうまく設計するのを助けることができますが、今度は – JoshKopen

答えて

-1

このようにしてみてください。

public static List<Bar> getBars(){ 
    List<Bar> res = new ArrayList<Bar>(); 
    res.add(one); 
    res.add(two); 
    ... 
    res.add(n); 
    return res; 
} 
+0

'Bar'を他のクラスで使いたいと思います。' return Foo.one' – matthias

0

あなたはタイプセーフ列挙パターンの修正版のようなものを考えていますか?これで

import java.util.ArrayList; 
import java.util.List; 

public class TypeSafeEnum{ 
    private String data=null; 
    private static List<TypeSafeEnum> list=new ArrayList<>(); 
    private TypeSafeEnum(String data){ 
     this.data=data; 
     list.add(this); 
    } 
    private static TypeSafeEnum One=new TypeSafeEnum("one"); 
    private static TypeSafeEnum Two=new TypeSafeEnum("two"); 
    private static TypeSafeEnum Three=new TypeSafeEnum("three"); 
    private static TypeSafeEnum Four=new TypeSafeEnum("four"); 
    public String getValue(){ 
     return data; 
    } 
    public static List<TypeSafeEnum> getMembers(){ 
     return list; 
    } 
} 

あなたは

public class Test{ 
    public static void main(String[]args){ 
     for(TypeSafeEnum member:TypeSafeEnum.getMembers()){ 
      System.out.println(member.getValue()); 
     } 
    } 
} 

ような何かをして

one 
two 
three 
four 
関連する問題