多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
### [`cast()`方法](https://lingcoder.gitee.io/onjava8/#/book/19-Type-Information?id=cast-%e6%96%b9%e6%b3%95) Java 中还有用于`Class`引用的转型语法,即`cast()`方法: ~~~ // typeinfo/ClassCasts.java class Building {} class House extends Building {} public class ClassCasts { public static void main(String[] args) { Building b = new House(); Class<House> houseType = House.class; House h = houseType.cast(b); h = (House)b; // ... 或者这样做. } } ~~~ `cast()`方法接受参数对象,并将其类型转换为`Class`引用的类型。但是,如果观察上面的代码,你就会发现,与实现了相同功能的`main`方法中最后一行相比,这种转型好像做了很多额外的工作。 `cast()`在无法使用普通类型转换的情况下会显得非常有用,在你编写泛型代码(你将在[泛型](https://lingcoder.gitee.io/onjava8/#/./20-Generics)这一章学习到)时,如果你保存了`Class`引用,并希望以后通过这个引用来执行转型,你就需要用到`cast()`。但事实却是这种情况非常少见,我发现整个 Java 类库中,只有一处使用了`cast()`(在`com.sun.mirror.util.DeclarationFilter`中)。 Java 类库中另一个没有任何用处的特性就是`Class.asSubclass()`,该方法允许你将一个`Class`对象转型为更加具体的类型。