Java 在具体的类中,我的ObjectOutputStream无法工作,无法显示正确的结果
我的用户抽象类Java 在具体的类中,我的ObjectOutputStream无法工作,无法显示正确的结果,java,oop,file-handling,serializable,objectoutputstream,Java,Oop,File Handling,Serializable,Objectoutputstream,我的用户抽象类 package mainpkg; abstract public class User { public int id; public String name, email, mobile; public User() { } public User(int id, String name, String email, String mobile) { this.id = id;
package mainpkg;
abstract public class User {
public int id;
public String name, email, mobile;
public User() {
}
public User(int id, String name, String email, String mobile) {
this.id = id;
this.name = name;
this.email = email;
this.mobile = mobile;
}
abstract public void setInfo();
abstract public void showInfo();
}
这是我的学生创造课
package mainpkg;
import java.io.Serializable;
import java.util.Scanner;
public class Student extends User implements Serializable {
private float cgpa;
private String dept;
public Student(float cgpa, String dept, int id, String name, String email, String mobile) {
super(id, name, email, mobile);
this.cgpa = cgpa;
this.dept = dept;
}
@Override
public void setInfo() {
System.out.println("Set Student Info");
Scanner s = new Scanner(System.in);
System.out.print("Enter ID: "); id = s.nextInt();
s.nextLine();
System.out.print("Enter Name: "); name = s.nextLine();
System.out.print("Enter Email: "); email = s.nextLine();
System.out.print("Enter Mobile: "); mobile = s.nextLine();
System.out.print("Enter dept: "); dept = s.nextLine();
System.out.print("Enter CGPA: "); cgpa = s.nextFloat();
}
@Override
public void showInfo() {
display();
}
public void display(){
System.out.println("ID : "+id+", Name : "+name+", email : "+email+", mobile : "+mobile+", CGPA : "+cgpa+", dept : "+dept+";");
}
@Override
public String toString() {
return "ID : "+id+", Name : "+name+", email : "+email+", mobile : "+mobile+", CGPA : "+cgpa+", dept : "+dept+";\n";
}
}
这是代码,告诉我什么,我的结果
@FXML
private void showStudentButtonOnclick(ActionEvent event) {
FileInputStream fis = null;
ObjectInputStream ois = null;
try {
File f = new File("student.bin");
if(!f.exists())
outputTextFeild.setText("File Does Not Exists!!");
else {
fis = new FileInputStream(f);
ois = new ObjectInputStream(fis);
outputTextFeild.setText("");
try{
// Student s;
while(true){
Student s = (Student) ois.readObject();
System.out.println(s.toString());
outputTextFeild.appendText(s.toString());
}
} catch (Exception ex){
System.out.println(ex);
}
}
} catch (IOException ex) {
// Logger.getLogger(FXMLMainSceneController.class.getName()).log(Level.SEVERE, null, ex);
System.out.println(ex);
}
finally{
if(ois != null)
try{
ois.close();
} catch (IOException ex){
System.out.println(ex);
}
}
}
但实际上,这是它的回报
ID:0,姓名:空,电子邮件:空,手机:空,CGPA:2.6,部门:cse
ID:0,姓名:空,电子邮件:空,手机:空,CGPA:2.7,部门:bba
他们不能返回我的超级类数据。
请帮帮我。谢谢。在阅读表格之前,您是否在文件中写入任何内容?是的,我会写入。这做得很好。我的CGPA:2.6,部门:cse;你能把代码贴在你写文件的地方,以及你的文件在项目目录中的位置吗