-2

如果我错了,请纠正我,但我最近注意到 Java 中的通配符...

? super T几乎意味着? accepts T

和...

? extends T一般是指? returns T

假设我有一个List<? extends Cat>. 除了想摆脱它之外,我有没有理由宣布这Cat一点?或者怎么样LitterBox<? super Cat>?除非我想将 a Cat(或传递 a 的东西Cat)传递给它,否则我会宣布这样的事情吗?

所以假设这个理由成立......

有什么方法可以让 Eclipse 同时进行语法高亮和自动替换accepts以及returnswith superandextends吗?

此外,除了“我必须在让其他人查看之前我必须对我的代码进行正则表达式”之外,还有什么理由认为这可能不是一个好主意吗?

4

2 回答 2

4

那么有什么方法可以让 Eclipse 同时使用语法高亮和自动替换接受并使用 super 和 extends 返回?

我想您可以修改(即破解)Eclipse JDT 编辑器来执行此操作,但这并不简单。

此外,除了“我必须在让其他人查看之前我必须对我的代码进行正则表达式”之外,还有什么理由认为这可能不是一个好主意吗?

这还不够吗?

关于什么:

  • “我必须先正则表达式我的代码,然后标准 Java 工具链才能理解它”,或者

  • “它不再是Java了”?

或者就此而言,甲骨文没有将其作为语言特性的任何原因?

因为对 Oracle 或绝大多数 Java 开发人员来说,对语言语法进行无偿的装饰性更改没有任何价值。


看,如果你想发明自己的编程语言,请随意。但建议对 Java 语言进行破坏性更改……坦率地说……毫无意义。


我不是在要求“破坏性改变”,我是在问他们为什么一开始不使用类似的语法

你问错人了。问问他们”。

于 2012-08-18T09:49:59.663 回答
2

当然,Oracle 没有将其作为语言特性的原因有很多,例如:

  1. 两个新的保留关键字;
  2. super并且extends几乎准确地捕捉到了意思;
  3. accepts在那些位置上甚至returns没有任何意义;为了帮助您的一般理解,想象它们可能是有用的。一个类型T extends List既不接受也不返回任何东西。
于 2012-08-18T11:08:57.533 回答