这看起来是个无聊的文字游戏,但其实Java术语表里是有关于每一项的说明的。
参考Java的术语表
https://docs.oracle.com/javase/tutorial/information/glossary.html
field
- A data member of a class. Unless specified otherwise, a field is not static.
- 一个类的数据成员。除非另有规定,否则一个字段不是静态的。
property
- Characteristics of an object that users can set, such as the color of a window.
- 用户可以设置对象的特征,如窗口的颜色。
variable
- An item of data named by an identifier. Each variable has a type, such as int or Object, and a scope. See also class variable, instance variable, local variable.
- 由一个标识符命名的数据项。每个变量都有一个类型,如int或Object,以及一个范围。参见类变量、实例变量、局部变量。
其实variable
还好,主要是其他两个容易混淆。
以Thread
类为例,看下IntelliJ IDEA
里,它是怎么区分field
和property
的:
打开Structure
界面之后,菜单栏有两个功能按钮,可以分别打开field
和property
:
field
和property
前面的图标分别用f
或p
表示。而property
有个小尖头可以点开,点开发现该项下面是一系列方法或者字段。基本上都是get
、set
这些方法。
可以看到标记为property
的并不一定都是用户可以修改的,比如#alive
、#getThreads
等都是#native
方法,并不支持用户设置。
而#getStackTrace
则是返回StackTraceElement
数组。
再看Thread
类的UML类图:
有很多其实是重合的。
不过idea
里仅作为参考。但是我也感觉这个没必要死扣,叫哪个名字还是根据上下文语境。不过在看官方文档时候,心里还是有个关于这两者区别的概念,此时以官方描述为准。