Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在静态方法中使用非静态变量或调用非静态方法(使用对象实例访问)是一种好的做法吗?_Java - Fatal编程技术网

Java 在静态方法中使用非静态变量或调用非静态方法(使用对象实例访问)是一种好的做法吗?

Java 在静态方法中使用非静态变量或调用非静态方法(使用对象实例访问)是一种好的做法吗?,java,Java,示例:在静态方法中使用非静态变量或调用非静态方法(使用对象实例访问)是一种好的做法吗 公共类字符串测试{ public String string = "helloworld"; public String subString(String str) { str = str.substring(1, 4); return str; } /** * @param args */ public static void main(String[] args) { // T

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

公共类字符串测试{

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方法。还使用实例传递参数字符串。这是一种好的做法吗?或者静态方法应该只修改静态变量并调用静态方法

如果您试图这样做,编译器会抱怨。静态方法中声明的变量是隐式静态的。如果您试图访问非静态程序,您的程序将无法编译。

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

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

这是一种不好的做法。你不应该那样做。实际上,在java中,您永远无法实现这一点。

您可以通过创建实例从静态上下文访问非静态成员,但从非静态上下文调用静态成员并不是一个好的做法…

这是一个快速的示例,希望为您提供一个单视图摘要:


我认为你甚至做不到。关心提供一个例子吗?(在帖子中:人们对一个错误的问题提供非答案)这不仅不是“良好实践”,而且是不可能的。这不是一个真正的问题。