按照 java 的哲学,一切皆对象, 所有成员应该都会有一个对象作为挂载点,但是static修饰的成员是否违背这一哲学或者原则?
1
FrankFang128 2016 年 11 月 10 日 via Android Class 也是对象
|
2
WhyAreYouSoSad 2016 年 11 月 10 日
一切对象也可以共享某个类别里面的固定资源啊,好比现实世界的各个领域,范围的公共资源。
|
3
mooncakejs 2016 年 11 月 10 日
1 楼说得对, class 本身就是对象,你可以理解成 static 属性其实是 Class 的成员, Class 由 java 负责生成单例
|
4
itqls 2016 年 11 月 10 日
类对象
|
5
wikimore 2016 年 11 月 10 日
static 是面向过程专用,比如一些 Utils ,违背了面向对象,但是不违背一切皆对象吧?
|
6
pangliang 2016 年 11 月 10 日
char int byte 就不是对象
|
7
misaka19000 2016 年 11 月 10 日
Java 中(几乎)一切都是对象。《 Thinging In Java 》
|
8
misaka19000 2016 年 11 月 10 日
靠, thinking 拼错了
|
9
aristotll 2016 年 11 月 10 日
有 primitive 类型的
为了提高性能 只是现在 autoboxing 让这种差别在写的时候小了起来 |
10
incompatible 2016 年 11 月 10 日
楼主可以试着写一段代码通过反射去调用一个 static 方法。
当你调用 Method.invoke(target, args)时,要把该 static 方法所属的 Class 对象作为 target 传入的。 Which means, static method 是以 Class 对象作为你所说的挂载点的。 |
11
imcxy 2016 年 11 月 10 日
哲学,你太较真了。
|
12
cheneydog 2016 年 11 月 10 日
怎么好用怎么来,何必追求理论上的完美,现实中总是这样妥协,又那样妥协。
|
13
Chrisplus 2016 年 11 月 10 日
不违背一切皆对象(但是有违背的)
|
14
jason19659 2016 年 11 月 10 日
有基本类型就已经违背了
|
15
xingda920813 2016 年 11 月 10 日
@incompatible 静态方法 Method.invoke(target, args) 中的 target 传入 null 即可。
|
16
kaneg 2016 年 11 月 10 日 via iPhone
java 本来就不是一切皆对象,原始类型,如 int , long 等
|
17
lightening 2016 年 11 月 10 日
每个 “一切皆对象” 的语言的 “一切” 的定义都不同……
|
18
102400 2016 年 11 月 10 日
Ruby 应该符合
|
19
otakustay 2016 年 11 月 10 日
static 因为没有多态性所以说违背面向对象是可以说的,但确实没有违背一切皆对象,毕竟 class/method/field 都可以是对象
但我其实不认为 java 里 class 是对象,不然不应该有 this.getClass()这种东西了,你应该可以直接把 MyClass 当作参数传给某方法,或者作为某个类的某个字段 |
20
0915240 2016 年 11 月 10 日
从大的来说一切都对象。
细究起来确实是“不常规”。 |
21
georgema1982 2016 年 11 月 11 日
首先 java 并非一切皆对象。所以这个题目本身就是建立在错误前提下的假命题。
|