【发布时间】:2016-09-12 02:46:28
【问题描述】:
下面的代码显然不会编译。
public class Machine {
public int id;
static Machine staticMethod() { return this; } //compilation error - "Cannot use this in a static context"
maskId() { }
}
所以不可能从 staticMethod() 到
(1) 获取特定于任何 Machine 对象实例的信息
(2) 执行特定于任何 Machine 对象
除非我错过了一些非常简单的事情。
Thread类的静态方法如何处理特定线程的动作/信息。
以下是来自 java docs Thread
static Thread currentThread() //返回对当前正在执行的线程对象的引用。
static void dumpStack() //将当前线程的堆栈跟踪打印到标准错误流中。
我是不是错过了什么。或者这些方法(或线程类)不同。像本机实现等或其他任何东西,但能够确定调用实例。
【问题讨论】:
-
currentThread是本机方法。dumpStack不依赖于任何实例,所以它不需要做任何特别的事情。 Source -
“当前线程”不等于“调用此方法的线程对象实例”。事实上,如果没有方法
currentThread,就没有办法得到这些信息。 -
@ErwinBolwidt 没错。
native鸡和蛋的解决方案。
标签: java oop jvm instance static-methods