2013-05-05 46 views
-1

使用示例:在静态方法中使用非静态变量或调用非静态方法(使用对象实例进行访问)是否是一种很好的做法?在静态方法中使用非静态变量或调用非静态方法(使用对象实例访问)是否是一种很好的做法?

公共类StringTest {

public String string = "helloworld"; 

public String subString(String str) 
{ 
    str = str.substring(1, 4); 
    return str; 
} 
/** 
* @param args 
*/ 
public static void main(String[] args) { 
    // TODO Auto-generated method stubs 
    StringTest st = new StringTest(); 
    System.out.println("substring "+st.subString(st.string)); 
} 

}我调用使用class.Also实例的方法通过使用实例参数。这是一个很好的做法吗?或者应该静态方法只修改静态变量并调用静态方法。

+1

我不认为你甚至可以做到这一点。关心提供一个例子? – vemv 2013-05-05 09:36:25

+0

(在线程中:人们对错误的问题提供不答案) – vemv 2013-05-05 09:44:52

+0

这不仅是不好的做法,它是不可能的。不是一个真正的问题。 – EJP 2013-05-05 09:57:07

回答

2

如果您尝试这样做,编译器会发出抱怨。在静态方法中声明的变量是隐式静态的。如果你试图访问一个非静态的程序,你的程序将不能编译。

2

试试吧,你会发现这是不可能的。您只能从静态方法访问静态成员。

0

我相信你在调用它的方法时将你的实例传递给静态方法(或者有一个静态字段指向它的方法),如果是这样的话,那么是的,它是可以的,并且不会违反任何我知道的的。

0

这是一个不好的做法。你永远不应该那样做。而且,实际上,在Java中你永远无法实现。

1

快速说明有希望使你一看一个总结:

enter image description here

相关问题