我已经看到了声明,接口和类 TYPE<CLASS>
这是什么意思?
没有证据,我相信您在谈论Java的泛型支持…
泛型允许您抽象类型
在Java 5之前,很难提供能够支持多种不同类型的Objects的类而不必为每种特定情况编写代码,因此人们通常Object
会这样做。
这导致在运行时做出许多困难的选择,您必须进行运行时检查以查看是否有可能将给定的Object强制转换为可用类型…例如
List myIntList = new LinkedList(); // 1
myIntList.add(new Integer(0)); // 2
Integer x = (Integer) myIntList.iterator().next(); // 3
现在,这已经很明显了,但是如果您仅通过List
,则必须检查列表中的每个元素的正确性…
但是现在,我们可以做到这一点…
List<Integer> myIntList = new LinkedList<Integer>(); // 1'
myIntList.add(new Integer(0)); // 2'
Integer x = myIntList.iterator().next(); // 3'
这是一个合同,基本上说“此列表仅包含整数类型的对象”。
使用泛型,您可以构造一个单一类,该类能够处理多种不同的数据类型或一系列数据类型(即,限制参数,以便必须从特定的父类型扩展它)。
Iterator<? extends Number> itNum;
基本上说,这将包含对象,从继承Number
,包括Integer
,Long
,Double
,Float
…
通常在方法和类的减速中,您会看到类似于…
public class MyGenericClass<T> {...}
要么
public class MyGenericClass<T extends MyBaseObject> {...}
这使您可以将其T
视为具体对象类型来引用,例如…
public class MyGenericClass<T extends MyBaseObject> {
private T value;
public MyGenericClass(T value) {
this.value = value;
}
}
这允许编译器(和JVM)从本质上T
用Concert类型“替换”标记(好吧,这要复杂一点,但这就是魔术)…
这样可以做…
... new MyGenericClass<MySuperObject>(new MySuperObject());
... new MyGenericClass<MySuperSuperObject>(new MySuperSuperObject());
并且知道它只会接受我指定的对象类型…
请仔细阅读第一段中的链接,我敢肯定它会比我能做到的更多;)
我发现这段代码是为了在SO post中找到重复的代码。但我不明白这行是什么意思
问题内容: 我正在学习上面的代码,它告诉我什么是自省者和什么是stopClass。但是我不明白这是什么意思?`for (PropertyDescriptor prop props) for(i=0;i<100;i++)` 有人可以帮忙进一步解释吗?谢谢! 问题答案: 这就是 Java 5中引入的每种循环语法。
问题内容: 我的问题如上所述。抱歉,可能是重复的,但最后找不到一个示例。 为什么不只使用它作为参数? 问题答案: 是可参数化的类,因此可以使用where 类型的语法。通过编写,您可以声明一个可以是任何类型的对象(是通配符)。该类型是包含类元信息的类型。 通过指定特定类型来引用泛型类型始终是一种好习惯,这是通过尊重您的习惯(您知道可参数化的)来使用的,但并不限制参数具有特定类型。 有关泛型和通配符的
问题内容: 我有一个程序试图缩小到所需的数量。我得到的输出是。 在Java 中是什么意思? 问题答案: “ NaN”代表“不是数字”。如果浮点运算具有一些输入参数,导致该运算产生一些未定义的结果,则会生成“ Nan”。例如,0.0除以0.0在算术上是不确定的。负数的平方根也是不确定的。
在Java中是什么意思?例如,如果我创建了一个名为的类。返回什么?