java - Java 中泛型的魔力

标签 java generics

我使用的是jdk 1.6
我的主要方法:

exmp3<String , Integer> exmp3 = new exmp3( "ravi" , new ArrayList<String>());
                exmp3.put(5);
                exmp3.put(15);
                exmp3.put(20);
                ArrayList<Integer> a =  exmp3.getObject();
                System.out.println(a.size());

类 exmp3 :

public class exmp3<ABC , XYZ>
{
    private ABC abc ;
    private ArrayList<XYZ> xyz;

        public exmp3(ABC abc , ArrayList<XYZ> xyz)
        {
            this.xyz =  xyz;
        }

        public void put(int i)
        {
            ArrayList<Integer> a =  (ArrayList<Integer>) this.xyz;
            a.add(i);
        }

        public ArrayList<XYZ> getObject()
        {
            return xyz;
        }
    }

我的查询是在创建 exmp3 的实例时进行的在main方法为什么String被接受为 ArrayList 的参数类型正如我提到的exmp3<String , Integer> exmp3main方法。

最佳答案

因为您没有为构造函数调用指定类型参数。要么显式指定它们( new exmp3<String, Integer>(...) ),要么让编译器计算出它们( new exmp3<>(...) ,需要 JDK7+)。

关于java - Java 中泛型的魔力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11014646/

相关文章:

Java 10 巴拿马项目 - 将 JNI 解决方案移植到巴拿马

java - 返回集合<?扩展类型> 与集合<类型>

java - 理解类<?>

java - 范围 "provided"不添加到类路径中的 jars

android - 无法加载库 :/usr/lib/jvm/java-6-openjdk/jre/lib/i386/xawt/libmawt. 所以

java - 为什么这个简单的 jparsec 词法分析器会失败?

c# - 直接拆箱一个装箱的 int 到 short

java - 在 Spring 中指定相对于上下文 XML 的位置

swift - var 符合具有 associateType 的协议(protocol)

c# - 为什么类型推断和隐式运算符在以下情况下不起作用?