- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这可能是一个关于泛型类型的愚蠢问题,但我在泛型类型遵循的命名约定背后找不到任何好的解释。如果有一个类有两个泛型类型; Java 程序员通常这样定义它:
class Foo<S extends Abc,T extends Pqr>{
S sVar;
T tVar;
}
为什么不做一些简单的事情,比如:
class Foo<A extends Abc,B extends Pqr>{
A aVar;
B bVar;
}
我只是想问为什么要遵循这样的命名约定? S
和 T
背后有什么原因吗?或者这个约定来自其他语言(比如 C++ 模板)?
最佳答案
来自Java tutorials :
<小时/>Type Parameter Naming Conventions
By convention, type parameter names are single, uppercase letters. This stands in sharp contrast to the variable naming conventions that you already know about, and with good reason: Without this convention, it would be difficult to tell the difference between a type variable and an ordinary class or interface name.
The most commonly used type parameter names are:
E - Element (used extensively by the Java Collections Framework)
K - Key
N - Number
T - Type
V - Value
S,U,V etc. - 2nd, 3rd, 4th typesYou'll see these names used throughout the Java SE API and the rest of this lesson.
特别注意:“如果没有这个约定,就很难区分类型变量和普通的类或接口(interface)名称。”,我当然同意这一点。 p>
大多数人会使用 T
和 S
,因为这是常见做法,因此对于大多数其他人来说可读。但我想补充一点,我看到名称 A
和 B
也用作类的示例名称:class A {...}
, B类{...}
。使用它们作为类型变量名称将使它们难以区分。
关于java - 为什么是S和T而不是A和B?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38027485/
我是一名优秀的程序员,十分优秀!