我是JAVA的新手,試圖使用readObject()交換客戶端和服務器之間的對象,但它顯示的是incompatible types : object cannot be converted to ChatData
。爲什麼發生錯誤以及如何解決此問題。請告訴我它是如何工作的。不兼容的類型:對象不能轉換爲ChatData
` Socket socket = new Socket("127.0.0.1", 3000);
ObjectOutputStream clientWriter;
ObjectInputStream clientReader;
try {
clientWriter = new ObjectOutputStream(socket.getOutputStream());
clientReader = new ObjectInputStream(socket.getInputStream());
ChatData clientOutputData = new ChatData("Hello! This is a message from the client number ", socket.getInetAddress());
clientWriter.writeObject(clientOutputData);
ChatData clientInputData = clientReader.readObject(); //Here is the error and the ChatData is another class.
try {
// do processing
Thread.sleep(2000);
} catch (InterruptedException ex) {
Logger.getLogger(ChatClient.class.getName()).log(Level.SEVERE, null, ex);
}
} catch (IOException ex) {
Logger.getLogger(ChatClient.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
if (clientReader != null) {
clientReader.close();
}
if (clientWriter != null) {
clientWriter.close();
}
socket.close();
} catch (IOException ex) {
System.err.println("Couldn't close the connection succesfully");
Logger.getLogger(ChatClient.class.getName()).log(Level.SEVERE, null, ex);
}
}
Thread.sleep(15000);
}
}
確實將其轉換爲'ChatData'工作? 'ChatData clientInputData =(ChatData)clientReader.readObject();' –
是的,它確實有效。但爲什麼有必要施展它? – DawnEagle999
,因爲java是一種靜態的,強類型的編程語言,所以隱式轉換(你在做什麼)對於編譯器來說是一個很大的問題。 –