gpt4 book ai didi

java - 如果我使用与泛型方法中使用的类型参数占位符 'X' 相同的类名 'X',哪个 X 有效?

转载 作者:行者123 更新时间:2023-11-30 08:09:41 25 4
gpt4 key购买 nike

我在 SCJP 指南中找到了它。代码如下所示。

class X {
public <X> X(X x) { }
}

这本书说它是有效的。

If you REALLY want to get ridiculous (or fired), you can declare a class with a name that is the same as the type parameter placeholder.

方法参数中的“X”会根据给定的内容采取不同的行动吗?例如;

new X(xObj) => 类 X 工作。

new X(dog) => 类型参数类型的 X 工作。

我目前无法测试运行代码。所以有人可以启发我。谢谢。

最佳答案

构造函数类型参数隐藏类型X ,由类定义。

如果你这样做:

X something = new X("hello");

然后是类型参数 X将被 String 取代.

此外,假设您定义了一个 List<X>在构造函数的主体中并将提供的参数添加到列表中:

List<X> list = new ArrayList<X>();
list.add(x);

拥有new X("hello")将使ListString 参数化(但不是由 X 定义的类型 class X 定义)并将包含提供的 "hello"字面意思。

总而言之,您必须遵循一些基本的命名约定,并避免使用此类类型参数创建此类类,因为这完全违反任何代码清洁原则。即使代码可以编译,也很难阅读。请记住,编程不仅是与计算机交谈,而且是与将来维护您的代码的人交谈(通过您的代码)。

关于java - 如果我使用与泛型方法中使用的类型参数占位符 'X' 相同的类名 'X',哪个 X 有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32248126/

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