使用示例:在静态方法中使用非静态变量或调用非静态方法(使用对象实例进行访问)是一种好习惯吗?
public class 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));
}
}我正在使用类的实例调用 subString 方法。还使用实例传递参数 string 。这是一个好习惯吗?或者静态方法是否只修改静态变量并调用静态方法。
答案 0 :(得分:2)
如果您尝试这样做,编译器会抱怨。在静态方法中声明的变量是隐式静态的。如果您尝试访问非静态程序,则程序将无法编译。
答案 1 :(得分:2)
尝试一下,你会发现这是不可能的。您只能从静态方法访问静态成员。
答案 2 :(得分:1)
快速插图,希望能为您提供一个视图摘要:
答案 3 :(得分:0)
我相信你在调用它的方法时将你的实例传递给静态方法(或者有一个指向它的静态字段),如果是这样的话那么是的它没关系,并且它不反对我所知道的任何东西
答案 4 :(得分:0)
这是一种不好的做法。你永远不应该这样做。实际上,在java中你永远无法实现这一点。
答案 5 :(得分:0)
您可以通过创建实例来访问静态上下文中的非静态成员,但是从非静态上下文调用静态成员不是一个好习惯...
http://javaguideforall.blogspot.in/2013/04/why-non-static-variable-cannot-be.html