Why do Java programmers like to name a variable “c

2019-01-13 04:02发布

I've seen lots of codes have declaration like Class clazz , where does this originate from ? Is this some kind of convention ? I think 'clazz' is not even an English word , has no meaning at all , how can so many programmers name a wrong name coincidentally ?

10条回答
Ridiculous、
2楼-- · 2019-01-13 04:28

clazz has been used in Java in place of the reserved word "class" since JDK 1.0. "class" is what you want, but abbreviating or inserting junk ("a", "the", "_", etc) reduces clarity. clazz just says class. "International" English speakers (those reading both English and American) are used to transposing 's' and 'z'.

Since Java has had disclosed source and a suitable culture right from the start, worthwhile Java code and tutorials pick up the same conventions. That's one of the great things about the Java ecosystem, which I think has been an important part of its success.

查看更多
forever°为你锁心
3楼-- · 2019-01-13 04:28

It comes down to the actual compiler and its ability to distinguish what a token means within its context. However, in this particular case, it is the compiler's inability to distinguish what the token class means in a different context. It is a hard and fast rule that class, regardless of its context, is used to denote the declaration of a class, and as such it is a reserved word. That is as simple and as low-level as it gets.

If you feel compelled, you could write your own Java compiler to include a contextual rule that will allow you to use class as a variable name. Though I think it would be far better use of your time to just use clazz or klass -- it would probably be good for your health as well.

查看更多
Ridiculous、
4楼-- · 2019-01-13 04:30

Java does not have a feature that allows you to use a keyword as an identifier, unlike C# with its @ prefix (e.g. @class is a valid identifier.)

查看更多
Luminary・发光体
5楼-- · 2019-01-13 04:34

We use clazz because class is a type header. For example, you use class here:

public class HelloWorld {

and here:

Object.class.getName();

So unfortunately, we have to use alternate names such as clazz.

查看更多
登录 后发表回答