今天遇到有人向我问一道题目,其中一个要求是,从一个数组中取出元素并还原成其原来的类型——这个数组中的元素以抽象类保存:
pubic class Business{
ArrayList<BookAbs> list;
}
题目提示,BookAbs中可以设置一个标志来表示当前类的类型。
我说,这样的话,这个标志可以直接是当前类的类型,这样就可以直接根据这个标志进行类型转换了。可惜对方初学者,一时半会没办法讲明白……
大概可以这样写?:
//这段代码可能有错,明天去公司看看其他类似的方法是怎么实现的
public T extends BookAbs getBook(BookAbs bookAbs, Class T){
return (T) bookAbs;
}
不知道怎么写对不对。
另外,就算可以返回BookAbs 的子类类型实例, 也没有什么实际意义,因为还是只能调用父类定义的方法,
BookAbs result = business.getBook(book, book.class);
再不然,要调用子类的方法,就是另一个深度的问题了。
哎,新装了系统之后还没有装eclipse呢……
网友评论