以下是CommonClass.java文件,麻烦大佬帮忙看看~

////////////////////////////////////////////////////
package com.ThreadTest;

public class CommonClass {

/**
* @param args
*/
public void print(String Msg){
String threadName=Thread.currentThread().getName();
System.out.println(threadName+":"+Msg);
}

}
##########################
##########################
这个是CleanRead.java文件
/////////////////////////////////////////////////
package com.ThreadTest;

public class CleanRead {

/**
* @param args
*/
private String fname,lname;
//引用上面的CommonClass,实现run()方法时用到CommonClass下的print()方法
public static CommonClass cc=null;//开始时我没有加static修饰符
public CleanRead(){
cc=new CommonClass();
}
/**
省略若干与问题无关的代码
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
final CleanRead cr=new CleanRead();
Runnable r2=new Runnable(){
public void run(){
就在这儿run()方法内部,我需要调用CommonClass下的print()方法,开始的时候我没有将对象cc说明为静态的。MyEclipse就一直提示错误,不让我过去,提示说只有将cc改为静态的才可以通过,难道在实现run()的时候要使用其它类的方法的时候一定要是静态的么????
cc.print("getName()="+cr.getName());

}
};
Thread t2=new Thread(r2,"Thread_2");
t2.start();
}
哎,粘贴了这么多,也不知道有没有说清楚,有劳各位高手了。。。

开满天机
浏览 205回答 2
2回答

智慧大石

因为你是在主函数里面构造的内部类,别忘了,主函数是static的,它不依赖于主函数所在的类。你应该把 Runnable r2=new Runnable(){//省略...}这段代码放到一个CleanRead的成员方法中,比如,在CleanRead类中,你写一个public void test(){}方法,然后把你的代码放到test方法体中,然后再main函数中调用,new CleanRead().test(); 就可以了

函数式编程

你可以实例化这个对象,然后用对象去引用它里面的方法!调用一个类的方法有两种方式1、类名.静态方法();2、类名 cc = new 类名();cc.方法名();
打开App,查看更多内容
随时随地看视频慕课网APP