静态方法如何获取实例详细信息或执行特定于实例的操作

时间:2016-09-12 02:46:28

标签: java oop jvm instance static-methods

下面的代码显然会编译。

public class Machine {
  public int id;
  static Machine staticMethod() { return this; } //compilation error - "Cannot use this in a static context"
  maskId() {   }
}

因此 staticMethod()无法实现 (1)获取特定于机器对象的任何实例的信息 (2)执行特定于机器对象

的任何实例的操作

除非我错过了一些非常简单的事情。

线程类的静态方法如何处理特定线程的操作/信息 以下是来自java docs Thread

的此类方法的签名
  

static Thread currentThread()//返回对当前正在执行的线程对象的引用   static void dumpStack()//将当前线程的堆栈跟踪打印到标准错误流。

我有没有想念。或者这些方法(或Thread Class)是不同的。像Native实现等或者什么,但能够确定调用实例。

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

线程可以问;我是哪个线程?在任何时候。它并不像大多数值那样将它作为参数传递给它。有一个colour = class static方法给出当前线程,从那里这个对象可以调用实例方法。

答案 2 :(得分:0)

我认为它是由调度程序完成的, 在这里,我提到阶级结构(这是我的感知,它是如何工作的)

class Thread{
static currentThread();

}

Class Scheduler{
//it has queue of all threads and also has track on current running thread 
//queue = {Thread1,Thread2,Thread3,Thread4,Thread5}
// let thread3 is running, whenever a call to Thread3.currentThread come up 
//some how jvm get instance of Thread3 from this queue and returns.

}