2

我正在尝试熟悉 java 中的泛型。我仍然不确定如何创建一个简单的类来获取两种类型(字符串、整数)。下面是在我的上下文中使用泛型的简单尝试。

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但我仍然不确定我在这里做什么。你首先弄清楚你在课堂上的“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 做了显着不同的事情,也许它应该是两个类,每个类都专门针对其中一种类型。

我认为泛型对于可以以相同方式处理不同类型的引用的情况很有用。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> 的 Java 泛型

于 2013-02-11T18:37:27.263 回答