Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.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_Syntax - Fatal编程技术网

Java 什么是<;类型>;用爪哇语是什么意思?

Java 什么是<;类型>;用爪哇语是什么意思?,java,syntax,Java,Syntax,我看到过声明、接口和类的类型都是TYPE 这是什么意思?这是泛型类型。 简单的例子是 List<String> Map<Integer, String> 列表 地图 公共类网格{ 这就是在Java中定义泛型类的方式。Grid是类,E是形式类型参数 如果你真的有兴趣了解它,你会在这里找到一个很好的参考资料-如果不看你到底看到了什么,你就不清楚你在问什么。但是你很可能在Java中看到了泛型 这个想法基本上是为了增强Java中的类型安全性。因此,像List intList

我看到过声明、接口和类的类型都是
TYPE

这是什么意思?

这是泛型类型。 简单的例子是

List<String>

Map<Integer, String>
列表
地图
公共类网格{
这就是在Java中定义泛型类的方式。
Grid
是类,
E
是形式类型参数


如果你真的有兴趣了解它,你会在这里找到一个很好的参考资料-

如果不看你到底看到了什么,你就不清楚你在问什么。但是你很可能在Java中看到了泛型


这个想法基本上是为了增强Java中的类型安全性。因此,像
List intList
这样的声明意味着
intList
中包含整数。如果你试图输入一个字符串,它将抛出编译错误。

没有证据,我相信你说的是支持

泛型允许抽象类型

在Java5之前,很难提供能够支持多种不同类型对象的类,而不必为每种特定情况编写代码,因此人们通常通过
Object

这会导致在运行时做出许多困难的选择,您必须进行运行时检查,以查看是否可以将给定对象强制转换为可用类型…例如

List myIntList = new LinkedList(); // 1
myIntList.add(new Integer(0)); // 2
Integer x = (Integer) myIntList.iterator().next(); // 3    
现在,这是相当明显的,但是如果只传递了一个
列表
,则必须检查列表中的每个元素的正确性

但现在,我们可以做到这一点

List<Integer> myIntList = new LinkedList<Integer>(); // 1'
myIntList.add(new Integer(0)); // 2'
Integer x = myIntList.iterator().next(); // 3'

这允许编译器(和JVM)本质上用concert类型“替换”标记
T
(好吧,它比那复杂一点,但这就是神奇之处)

这允许做一些事情,如

... new MyGenericClass<MySuperObject>(new MySuperObject());
... new MyGenericClass<MySuperSuperObject>(new MySuperSuperObject());
…新建MyGenericClass(新建MySuperObject());
…新的MyGenericClass(新的MySuperSuperObject());
并且知道它只会接受我指定的对象类型


通读第一段中的链接,我相信它比我能做得更好;)

@MadProgrammer可能是泛型类型??您必须参考它,它是Java的一部分。公共接口GridArrayList getValidAdjacentLocations(Location loc);挑剔:它们是参数化类型(不一定使用有界类型参数)。(可能您的措辞与我的不同)列表
Iterator<? extends Number> itNum;
public class MyGenericClass<T> {...}
public class MyGenericClass<T extends MyBaseObject> {...}
public class MyGenericClass<T extends MyBaseObject> {
    private T value;
    public MyGenericClass(T value) {
        this.value = value;
    }
}
... new MyGenericClass<MySuperObject>(new MySuperObject());
... new MyGenericClass<MySuperSuperObject>(new MySuperSuperObject());