Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java如何生成接受字符串和整数的泛型类?_Java_Class_Generics - Fatal编程技术网

Java如何生成接受字符串和整数的泛型类?

Java如何生成接受字符串和整数的泛型类?,java,class,generics,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? } publi

我试图熟悉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?
  }


}
公共类容器
{
公共交通
{
//我知道我有一根绳子吗?
}
公共事务
{
//我怎么知道我有一个整数?
}
公共容器()
{
//构造函数是什么样子的?
}
}
我正在引用此页面,但我仍然不确定我在这里做什么。你是不是先弄清楚你在课堂上的“T”是什么类型的


泛型编程真的用于接口和抽象类吗?

如果你想使用
String
Integer
你可能必须使用
Object
作为类型。坦率地说,这消除了泛型的大部分好处,您可能应该检查您是否确实有一个合理的模型,以及交织字符串和整数的原因

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

Class type = Integer.class
Integer i = verifyType("100",type);
对于整数,类似于字符串


参考

如果该类对String和Integer执行的操作明显不同,那么它可能应该是两个类,每个类专门用于其中一种类型


我认为泛型对于以相同方式处理不同类型的引用的情况非常有用
ArrayList
ArrayList
不需要任何特定于字符串或整数的代码。

容器类实际上可以包含字符串、整数或任何类型,您只需正确使用它即可。大概是这样的:

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);
公共类容器{
私有T元素;
公共T getElement(){
返回元素;
}
公共无效集合元素(T元素){
this.element=元素;
}
公共容器(T元素){
this.element=someElement;
}
}
您可以这样使用它:

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 myIntContainer=newcontainer();
myIntContainer.setElement(234);
或者

Container myStringContainer=newcontainer();
setElement(“测试”);

试图将泛型集合中的对象类型限制为两个类(String和Integer),这两个类没有对象的共同祖先,这似乎有点勉强。感谢您的响应。这不是我想看到/听到的。但是构造器呢?那会是什么样子?您可以将类型为T的参数传递给构造函数。我将编辑此答案以添加一个示例。。。