我不确定为什么Eclipse会给我这个错误:
类型
的方法listen()
Object
未定义
我犯了什么简单的错误?另外,我的代码是编写main
方法的正确方法,该方法实例化EchoServer0
对象并调用其listen
方法吗?
public class EchoServer0 {
public void listen() {
ServerSocket socket = null;
try{
socket = new ServerSocket(2013);
System.out.println("Opened server socket");
socket.setSoTimeout(2000);
socket.accept();
socket.close();
}
catch (SocketTimeoutException ste){
System.out.println("Timed out after " + 2000 + " ms");
}
catch (Exception e){
System.out.println(e.getClass().getName()+" at server: " + e.getMessage());
}
}
public static void main(String[] args) {
Object EchoServer0;
EchoServer0.listen();
}
}
答案 0 :(得分:9)
将您的主要内容更改为:
public static void main(String[] args) {
EchoServer echoServer = new EchoServer();
echoServer.listen();
}
当你宣布Object EchoServer0;
时,你会犯一些错误。
new
创建一个实例。答案 1 :(得分:1)
试试这个。
public static void main(String[] args) {
EchoServer0 myServer;
myServer = new EchoServer0();
myServer.listen();
}
您尝试做的是声明Object
类型的变量,而不是为该引用的变量创建任何内容,然后尝试调用不存在的方法(在类Object
中)在一个尚未创建的对象上。它永远不会起作用。
答案 2 :(得分:1)
该行
Object EchoServer0;
表示您正在分配名为Object
的{{1}}。这与班级EchoServer0
无关。此外,该对象未初始化,因此EchoServer0
为EchoServer0
。类和标识符具有单独的命名空间。这实际上会编译:
null
请遵循Java命名标准:类以大写字母开头,标识符以小写字母开头,常量和String String = "abc"; // My use of String String was deliberate.
是全大写字母。
enum
答案 3 :(得分:0)
应该是那样的
public static void main(String[] args) {
EchoServer0 e = new EchoServer0();
// TODO Auto-generated method stub
e.listen();
}
您的Object
类型的变量确实没有这样的方法,但您在上面定义的类型EchoServer0
肯定有。