为了账号安全,请及时绑定邮箱和手机立即绑定

使用 java 泛型类型进行类型转换

使用 java 泛型类型进行类型转换

白板的微信 2022-11-02 15:15:54
我有一个Object o可以转换为类型 A 和类型 B的函数。我需要一个transformForType(Type t, Object o)接受类型的函数,比如说 A 或 B,并检查是否为该类型并对其进行处理以对其进行转换。该函数的用法是这样的:B result = tranformForType(B.class, o);我的问题是定义tranformForType函数的方法是什么,如果可能的话,使用泛型类型的最佳方法是什么。问候。
查看完整描述

2 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

该类Class已经有一个在运行时强制转换对象的方法——cast方法

将对象强制转换为该Class对象表示的类或接口。

你只需要调用它。它会ClassCastException像普通演员一样抛出。

B result = B.class.cast(o);


查看完整回答
反对 回复 2022-11-02
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

一个简单的方法是:

static <T> T transformForType(Class<T>, Object o) { ...

那个对那个 T 类型没有任何限制,但是当然,如果 A/B 实现相同的接口,或者具有相同的基类,你可以进一步细化那个 T:

static <T extends ABInterface> T transformForType(Class<T>, Object o) { ...

例如。

请注意:显然,当您对要投射的类型没有任何限制时,您可以选择另一个答案并调用SomeClass.class.cast(). 但是,如果您只想允许特定类型,您可能想要使用这样的transformForType()方法(然后将使用该cast()方法)!


查看完整回答
反对 回复 2022-11-02
  • 2 回答
  • 0 关注
  • 468 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信