gpt4 book ai didi

java - 将类型参数传递给泛型

转载 作者:太空宇宙 更新时间:2023-11-04 07:35:18 25 4
gpt4 key购买 nike

public class G<x> {
x i;
}

public class E {
public static void main(String[] args) {
G<Integer> b1 = new G<Integer>();
G<String> b2 = new G<String>();
b1.i = 50;
b2.i = "start";
System.out.println(b1.i);
System.out.println(b2.i);
}
}

此案例与下面给出的其他案例有何不同

public class G<x> {
x i;
}

public class E {
public static void main(String[] args) {
G b1 = new G();
G b2 = new G();
b1.i = 50;
b2.i = "start";
System.out.println(b1.i);
System.out.println(b2.i);
}
}

我知道,当您创建 G 类的对象时,我们必须为泛型定义类型参数,但如果不传递类型参数,它将起作用..将显示输出。那么为什么我的老师说 Type 参数很重要,尽管代码没有它也可以运行。

两种情况都有所不同。在第一种情况下,我们通过引用变量 b1 传递整数类型参数,通过 b2 引用变量传递字符串类型参数,但在第二种情况下,我们不这样做。如果不这样做,在第二种情况下,数据类型将是对象类型。两个代码都会给你相同的答案,但我的老师说你必须始终使用 1case 。所以我的问题是他为什么这么说,因为两个代码都会给你相同的答案,所以为什么我们不能使用 2case

最佳答案

我假设你实际上的意思是编译:

G b1=new G();
G b2=new G();

b1.i=50;
b2.i="start";
System.out.println(b1.i);
System.out.println(b2.i);

这恰好可以工作,因为 PrintStream.println 具有 Object 的重载,因此将采用任何对象。通常你会想调用一个更有趣的方法。

顺便说一句,仍然可能存在差异。由于 PrintStream 的特殊设计,此代码将执行不同的操作。

G b1=new G();
G<char[]> b2=new G<>();

b1.i="start".toCharArray();
b2.i="start".toCharArray();
System.out.println(b1.i);
System.out.println(b2.i);

您将收到警告。通常,您希望将警告视为错误。

关于java - 将类型参数传递给泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16972937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com