黑马程序员技术交流社区

标题: 【复习中的疑惑】为什么这里报这个错误提示? [打印本页]

作者: Mokill0911    时间: 2014-10-12 01:16
标题: 【复习中的疑惑】为什么这里报这个错误提示?

提示:
ThreadTest.java:19: 错误: 无法从静态上下文中引用非静态 方法 getName()
                        System.out.println((Thread.curredThread()==this)+"..."+Thread.getName()+"...run"+".."+x);



代码如下:
  1. class Test extends Thread{

  2.         Test(String name){
  3.                 super(name);
  4.         }
  5.        
  6.         public void run(){
  7.                 for(int x=0; x<50; x++){
  8.                         System.out.println((Thread.currentThread()==this)+"..."+Thread.getName()+"...run"+".."+x);
复制代码





小弟最先思考的是是否是因为run方法需要在主函数中,创建了实体才会被调用,因此使用Thread.getName() 会出现静态访问报错,那么前面的Thread.currentThread()==this 这里为何可以通过呢?


难道是因为getName() 方法涉及到了实体创建和调用的原因?


望前辈们解惑,谢谢:)

QQ图片20141012010903.jpg (30.37 KB, 下载次数: 6)

QQ图片20141012010903.jpg

作者: 十万一千    时间: 2014-10-12 23:42
public final String getName()  方法声明不是static的
作者: qq8921310    时间: 2014-10-13 00:16
加个静态就好了、

作者: Mokill0911    时间: 2014-10-13 01:05
十万一千 发表于 2014-10-12 23:42
public final String getName()  方法声明不是static的

昨天脑袋没转过弯来,谢谢啦~

currentThread(); 这个方法好像是静态的哈,所以可以被类名直接调用,对吧~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2