0

私は現在ジェネリックを学んでいます私はここにこのジェネリッククラスを持っています

package generics.lesson;

public class Pair<T> {

    private T first;
    private T second;

    public Pair(){ first = null; second = null; }
    public Pair(T first, T second){ this.first = first ; this.second = second;}

    public T getFirst() { return first; }
    public T getSecond() { return second; }

    public void setFirst(T first) { this.first = first; }
    public void setSecond(T second) { this.second = second; }
}

これまでのところ私はこれを理解していますが、それから私はこれに出くわしました

public static Pair<String> minmax(String[] a)
    {
        if(a.length == 0 || a == null) return null;
        String min = a[0];
        String max = a[0];

        for(int i = 1 ;  i < a.length ; i++)
        {
            if(min.compareTo(a[i])>0) min = a[i];
            if(max.compareTo(a[i])<0) max  = a[i];
        }
        return new Pair<String>(min,max);
    }

私を混乱させるのはこれです

public static Pair<String> minmax(String[] a)

質問

これはどのように可能ですか?ジェネリッククラスはメソッドの戻り型にすることができますか?

4

2 に答える 2

4

はい、できます。

なぜできないと思いますか?

于 2012-04-30T15:22:01.383 に答える
2

これが機能する場合

public T getFirst() { return first; } // returns a generic type
public T getSecond() { return second; } // returns a generic type

(あなたは「これを理解している」とあなたが言った)

これもうまくいくと思います

public static Pair<String> minmax(String[] a) // returns a generic type

ところで:Java 1.4ではどちらも機能しませんが、Java5.0以降では両方とも機能します。;)

于 2012-04-30T15:26:12.203 に答える