非常常见的初学者错误是当您尝试"静态"使用类属性而不创建该类的实例时.它会留下您提到的错误消息:
您可以将非静态方法设为静态,也可以使该类的实例使用其属性.
为什么?我不是要求解决方案.我很高兴知道它背后的原因是什么.核心原因!
private java.util.List<String> someMethod(){
/* Some Code */
return someList;
}
public static void main(String[] strArgs){
// The following statement causes the error. You know why..
java.util.List<String> someList = someMethod();
}
Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的类,我想用它作为另一个的子类.但当我把它的代码放在父类的时候,我得到:
非静态变量,不能从静态上下文引用
另一方面,当我把子GenTest类的类代码放在"父级"类代码之外时 - JavaApp1我没有得到这个错误.
public class JavaApp1 {
class GenTest {
@Deprecated
void oldFunction() {
System.out.println("don't use that");
}
void newFunction() {
System.out.println("That's ok.");
}
}
public static void main(String[] args) {
GenTest x = new GenTest();
x.oldFunction();
x.newFunction();
}
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
下面的代码在变量上生成一个错误,上面con2写着 "non-static variable con2 cannot be referenced from a static context Error."我用Google搜索解决方案,并且他们建议变量未初始化以使方法可用.我错误地初始化了吗?我也尝试过把事情公之于众,但这也无济于事.
import java.io.*;
import java.net.*;
import java.sql.*;
import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.PreparedStatement;
import net.sourceforge.jtds.jdbcx.JtdsDataSource;
import net.sourceforge.jtds.jdbc.Driver;
class testconnect {
private java.sql.Connection con2 = null;
private final String url2 = "jdbc:jtds:sqlserver://";
private final String serverName= "SQL01";
private final String portNumber = "2677";
private final String databaseName= "App";
private final String userName = "bob";
private final String password = "boob";
private final String selectMethod = "cursor";
private …Run Code Online (Sandbox Code Playgroud)