Java如何生成接受String和整数的泛型类?

时间:2013-02-11 18:33:43

标签: java class generics

我试图熟悉java中的泛型。我还是不确定如何创建一个简单的类来获取两种类型(String,Integer)。以下是在我的上下文中使用泛型的一个微不足道的尝试。

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?
  }


}

我引用了这个页面oracle generics,但我仍然不确定我在这里做了什么。你是先弄清楚你的&#34; T&#34;在课堂里?

通用编程是否真正用于接口和抽象类?

4 个答案:

答案 0 :(得分:3)

那么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");

答案 1 :(得分:2)

如果类对String和Integer做了很多不同的事情,也许它应该是两个类,每个类都专门用于其中一种类型。

我认为泛型对于可以以相同方式处理不同类型的引用的情况很有用。 ArrayList<String>ArrayList<Integer>不需要任何特定于String或Integer的代码。

答案 2 :(得分:0)

如果您想使用StringInteger,则可能需要使用Object作为类型。这坦率地消除了泛型的大部分好处,你可能应该检查你是否确实有一个声音模型以及编织字符串和整数的原因。

但是,它对接口,自定义类和摘要很有用。这意味着您可以保证对象的类型正确,并且无需每次为每种类型的事物实现它们。

答案 3 :(得分:0)

Class type = Integer.class
Integer i = verifyType("100",type);

表示整数,类似于字符串...

参考Java Generics with Class <T>