java编程思想第四版中文版86页作者提到的,静态方法内部不能调用非静态方法,这不是绝对的,我们可以传递一个对象的引用到静态方法里,
通过这个引用就可以调用非静态的方法和数据成员了。
package com.jldx.test;
public class StaticInvokeNonStaticMethod {
private String name;
public StaticInvokeNonStaticMethod(String name) {
this.name = name;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
StaticInvokeNonStaticMethod s = new StaticInvokeNonStaticMethod("zhangsan");
StaticInvokeNonStaticMethod s2 = new StaticInvokeNonStaticMethod("wangwu");
s.ask(s);
s.ask(s2);
}
public static void ask(StaticInvokeNonStaticMethod s) {
System.out.println("静态方法内部调用非静态方法");
s.say();
}
public void say() {
System.out.println("hello my name is " + name);
}
}