Java里默认不允许静态方法直接调用非静态方法。如果非要使用,只能通过类对象的引用去调。静态方法里的传参:当前类对象。
举例:
public class StaticMethodTest{
/**线程安全单例模式*/
private StaticMethodTest (){};
private static class GetSingleHolder{
private static final StaticMethodTest INSTANCE = new StaticMethodTest();
}
public static StaticMethodTest getInstance(){
return GetSingleHolder.INSTANCE;
}
/**线程安全单例模式*/
void NonStaticMethod(){
System.out.println("This is a non-sataic method.");
}
static void StaticMethod(StaticMethodTest s){
System.out.println("This is a static method.");
s.NonStaticMethod();
}
/**调用*/
public satic void invokeStaticMethod(){
StaticMethod(StaticMethodTest.getInstance());
}
}