您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

执行泛型转换时,在泛型方法中捕获ClassCastException

执行泛型转换时,在泛型方法中捕获ClassCastException

在类型擦除之后,return (T)number变为return (Number)number(因为Number是的类型边界T),不会引发异常(因为number是的实例Integer)。

另一方面,分配

Float f = getNumber();

编译为

Float f = (Float) getNumber();

由于会getNumber()传回Number,如果没有强制转换,就无法将其指派给Float变数。

此转换抛出ClassCastExceptionwhen getNumber()不是Float

4.6。类型擦除

类型擦除是从类型(可能包括参数化类型和类型变量)到类型(从不参数化类型或类型变量)之间的映射。我们写| T | 用于擦除类型T。擦除映射定义如下…

擦除类型变量(第4.4节)是擦除其最左边界。

其他 2022/1/1 18:30:20 有426人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶