package day14;
import java.io.*;
class Apple implements Serializable{
private String name;
private String color;
private double weight;
public Apple() {
super();
}
public Apple(String name, String color, double weight) {
super();
this.name = name;
this.color = color;
this.weight = weight;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
public String toString() {
return "Apple[name="
+ name +",color=" + color
+ ",weight=" + weight + "]";
}
}
public class WriteObject {
public static void main(String[] args) {
Apple ap = new Apple("红富士", "红色", 3.4);
System.out.println(ap);
// 当程序结束时,虚拟机退出,内存中的Apple对象就被销毁了
try (
ObjectOutputStream oos = new ObjectOutputStream(
new FileOutputStream("app.bin"));
)
{
oos.writeObject(ap); //把ap对象写入app.bin文件中
}
catch (Exception ex) {
// TODO: handle exception
}
}
}
问题1:为什么直接在eclipse上运行无法在当前文件夹下生成app.bin?
使用javac编译运行会找不到主类
去掉package day14后使用javac编译运行后才可以在当前文件夹下生成app.bin
如果必须要在eclipse上运行,则bin.app必须写完整路径
问题2:在同一个包中新建一个类ReadObject,使用WriteObject定义的类Apple,同样使用javac编译,结果怎么样都是找不到符号Apple(除非把两个类中的package day14都去掉)。
package day14;
import java.io.*;
public class ReadObject {
public static void main(String[] args) {
try (
ObjectInputStream ois = new ObjectInputStream(
new FileInputStream("app.bin"));
)
{
Apple ap = (Apple)ois.readObject();
System.out.println(ap);
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
两个类都不去掉package day14,在eclipse上又可以正常运行了。这是怎么回事?