field、variable和property有什么区别

简单学

2021-05-26 · 阅读时间: 7 分钟

这看起来是个无聊的文字游戏,但其实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里,它是怎么区分fieldproperty的: 打开Structure界面之后,菜单栏有两个功能按钮,可以分别打开fieldproperty

sSUlad.jpg

fieldproperty前面的图标分别用fp表示。而property有个小尖头可以点开,点开发现该项下面是一系列方法或者字段。基本上都是getset这些方法。

可以看到标记为property的并不一定都是用户可以修改的,比如#alive#getThreads等都是#native方法,并不支持用户设置。 而#getStackTrace则是返回StackTraceElement数组。

再看Thread类的UML类图:

sSaI0g.png

有很多其实是重合的。

不过idea里仅作为参考。但是我也感觉这个没必要死扣,叫哪个名字还是根据上下文语境。不过在看官方文档时候,心里还是有个关于这两者区别的概念,此时以官方描述为准。