有两道题:
1:public void go(int x){
assert(x>0);
switch(x){
case 2;
default:assert false;
}
}private void go2(int x){ assert(x<0);}
问三个asser哪一个或几个是正确用法。2:import java.io.*;
class Animal{
Animal(){System.out.println("a");}
}
class Dog extends Animal implements Serializable{
Dog(){System.out.println("d");}
}
public class Beagle extends Dog{}
问如果构造一个Beatle的实例,然后序列化,然后反序列化,最后打印的结果是什么?求高手

解决方案 »

  1.   

    1.
    assert false;是可以用的
    2.
    public static void main(String[] args)throws Exception {
    Beagle beagle = new Beagle();//输出:a d
    ByteArrayOutputStream bo =  new ByteArrayOutputStream();
    ObjectOutputStream out = new ObjectOutputStream(bo);
    out.writeObject(beagle);
    byte[] buff = bo.toByteArray();
    ByteArrayInputStream bin = new ByteArrayInputStream(buff);
    ObjectInputStream oin = new ObjectInputStream(bin);
    beagle = (Beagle)oin.readObject();//输出:a
    }
    Dog可以序列化,那么Dog的子类都可以序列化,因此 Beagle可以序列化。但是Dog的父类并不能序列化,因此,反序列化的时候,需要构造父类的实例,只能调用无参的构造函数来实现