java静态方法中调用非静态方法的实现
2011-10-08 00:02
465 查看
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);
}
}
通过这个引用就可以调用非静态的方法和数据成员了。
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);
}
}
相关文章推荐
- Java的RMI远程方法调用实现和应用
- Android JNI反射调用Java构造方法、成员方法和静态方法
- C#实现调用Java类中方法
- JAVA实现汉字转拼音缩写--类的静态方法
- java静态代码块和静态方法的区别和调用顺序、static用法
- Java传统多线程的实现有两种方法,继承Thread类或者实现Runnable即可.线程启动时调用start()方法.
- java中利用反射机制实现调用给定为字符串的方法名
- .Net调用Java的实现方法
- Java - 是否可以从一个静态(static)方法内部发出对非静态(non-static)方法的调用?
- JAVA调用Oracle存储过程的实现方法
- java代码实现鼠标双击出现画图-----------paint()方法由系统自动调用,且一定是小写的字母p
- dwr+maven实现java和js方法互相调用,实现推送, 完整切超简单例子
- Java的RMI(远程方法调用)的实现范例
- Primefaces中通过RemoteCommand实现JS触发调用Java后台方法
- 使用jni实现在Java中调用C++的方法
- Java版C语言版简单使用静态语言实现动态数组的方法
- Java_静态方法中调用非静态方法
- java本地方法调用(JNI)的参考代码----实现将String转换成char*,将char*转换成String.
- Android中WebView实现Javascript调用Java类方法
- FreeMarker调用JAVA静态方法