2

私はJavaのジェネリックに慣れようとしています。2つの型(文字列、整数)を取る単純なクラスを作成する方法がまだわかりません。以下は、私のコンテキストでジェネリックを操作する簡単な試みです。

public class Container <T>
{

  public T aString()
  {
     //Do i know I have a string?
  }

  public T anInt()
  {
    //How do I know I have an integer?
  }

  public Container<T>()
  {
    //What would the constructor look like?
  }


}

このページのオラクルジェネリックを参照していますが、ここで何をしているのかまだわかりません。クラスで「T」のタイプを最初に理解しますか?

ジェネリックプログラミングは本当にインターフェースと抽象クラスに使用されていますか?

4

4 に答える 4

4

そのContainerクラスは、実際にはString、Integer、または任意の型を保持できます。正しく使用する必要があります。このようなもの:

public class Container<T> {
    private T element;

    public T getElement() {
        return element;
    }

    public void setElement(T element) {
        this.element = element;
    }

    public Container(T someElement) {
        this.element = someElement;
    }
}

そして、あなたはそれをこのように使うことができます:

Container<Integer> myIntContainer = new Container<Integer>();
myIntContainer.setElement(234);

また...

Container<String> myStringContainer = new Container<String>();
myStringContainer.setElement("TEST");
于 2013-02-11T19:05:45.530 に答える
2

クラスがStringとIntegerに対して大幅に異なることを行う場合は、それぞれがこれらのタイプの1つに特化した2つのクラスである必要があります。

ジェネリックスは、さまざまなタイプの参照を同じ方法で処理できる状況で役立つと思います。ArrayList<String>文字列または整数に固有のコードは必要ありArrayList<Integer>ません。

于 2013-02-11T18:41:35.370 に答える
0

String使用したい場合Integerは、おそらくObjectタイプとして使用する必要があります。これにより、ジェネリックスの利点のほとんどが率直に失われます。おそらく、文字列と整数を織り交ぜる適切なモデルと理由があることを確認する必要があります。

しかし、はい、それはインターフェース、カスタムクラスおよび抽象に役立ちます。これは、オブジェクトが正しいタイプであることを保証でき、タイプごとに毎回それらを実装する必要がないことを意味します。

于 2013-02-11T18:36:46.923 に答える
0
Class type = Integer.class
Integer i = verifyType("100",type);

整数の場合、文字列と同様です。

クラス<T>のJavaGenericsを参照する

于 2013-02-11T18:37:27.263 に答える