当前位置: 首页 > 面试题库 >

那是什么 Java中的语法含义?

潘佐
2023-03-14
问题内容

我迅速在Google上找到了答案,但找不到/认为准确的搜索参数。

我正在自学Java,但似乎找不到某种语法的含义。

public class Node<E>{
    E elem;
    Node<E> next, previous;
}

<E>意味着什么?我模糊地记得箭头括号与向量有关,但是根据上面的代码,我感觉到它与枚举有关。

任何帮助或澄清将不胜感激。谢谢。


问题答案:

这些称为泛型。

通常,这些在定义类,接口和方法时使 类型 (类和接口)成为参数。

与使用非泛型代码相比,使用泛型有很多好处,如Java教程中所示:

  • 在编译时进行更强的类型检查。 Java编译器对通用代码进行强类型检查,如果代码违反类型安全性,则发出错误。修复编译时错误比修复运行时错误容易,后者可能很难找到。

例如:

    // without Generics
List list = new ArrayList();
list.add("hello");

// With Generics
List<Integer> list = new ArrayList<Integer>();
list.add("hello"); // will not compile
  • 使程序员能够实现通用算法。 通过使用泛型,程序员可以实现对不同类型的集合工作的泛型算法,可以对其进行自定义,并且类型安全且易于阅读。

  • 消除演员阵容。

例如,以下不带泛型的代码段需要强制转换:

    List list = new ArrayList();
list.add("hello");
String s = (String) list.get(0);

当重写以使用泛型时,代码不需要强制转换:

    List<String> list = new ArrayList<String>();
list.add("hello");
String s = list.get(0); // no cast


 类似资料:
  • 我尝试在浏览控制台中测试此语法,但遇到错误: 对于上面的代码,我关心的是是否会引发任何错误。

  • 问题内容: 我已经看到了声明,接口和类 这是什么意思? 问题答案: 没有证据,我相信您在谈论Java的泛型支持… 泛型允许您抽象类型 在Java 5之前,很难提供能够支持多种不同类型的Objects的类而不必为每种特定情况编写代码,因此人们通常会这样做。 这导致在运行时做出许多困难的选择,您必须进行运行时检查以查看是否有可能将给定的Object强制转换为可用类型…例如 现在,这已经很明显了,但是如

  • 问题内容: 我正在研究将数据存储在mongodb中的示例Go应用程序。这行代码(https://github.com/zeebo/gostbook/blob/master/context.go#L36)似乎访问了存储在大猩猩会话中的用户ID: 有人可以在这里给我解释一下语法吗?我知道这可以从会话中获取价值,但是接下来的部分是什么呢?为什么括号中的点后面是表达式?这是函数调用吗? 问题答案: 是,括

  • 问题内容: Java中“ this”的含义是什么? 问题答案: this 指当前对象 每个非静态方法都在对象的上下文中运行。因此,如果你有这样的课程: 然后调用上会打印 因此,有效地将它用于多种用途: 澄清你在谈论一个字段,当还有其他与该字段同名的东西时 整体引用当前对象 在构造函数中调用当前类的其他构造函数

  • 问题内容: 这个静态函数是来自名称空间的类中的吗? 我该如何解释这个名字?在JRE中的哪个位置定义了此功能?在/ ? 问题答案: 否。实际上是类中的静态成员(不是.NET中的静态成员),它是。的实例。并且是该类的常规(重载)方法。 请参阅http://download.oracle.com/javase/6/docs/api/java/lang/System.html#out。 其实,如果/ /

  • 问题内容: 从www.JavaPractices.com复制的此代码中的令牌是什么意思?当我用更通用的泛型类型替换它时,它无法编译。(错误:T无法解析为类型。)为什么? 编辑:当然,当我们使用类似的通用类型标记时,它必须出现在类声明中。这里也没有,也没有在类的声明,但它仍然可以编译和运行正常。 问题答案: 它无法编译,因为您的类不是通用的(也不是您的任何方法)。在此特定示例中,小丑(?)表示Sch