猿问

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

我有一个Object o可以转换为类型 A 和类型 B的函数。

我需要一个transformForType(Type t, Object o)接受类型的函数,比如说 A 或 B,并检查是否为该类型并对其进行处理以对其进行转换。
该函数的用法是这样的:B result = tranformForType(B.class, o);


我的问题是定义tranformForType函数的方法是什么,如果可能的话,使用泛型类型的最佳方法是什么。
问候。


白板的微信
浏览 470回答 2
2回答

红颜莎娜

该类Class已经有一个在运行时强制转换对象的方法——该cast方法:将对象强制转换为该Class对象表示的类或接口。你只需要调用它。它会ClassCastException像普通演员一样抛出。B result = B.class.cast(o);

尚方宝剑之说

一个简单的方法是:static&nbsp;<T>&nbsp;T&nbsp;transformForType(Class<T>,&nbsp;Object&nbsp;o)&nbsp;{&nbsp;...那个对那个 T 类型没有任何限制,但是当然,如果 A/B 实现相同的接口,或者具有相同的基类,你可以进一步细化那个 T:static&nbsp;<T&nbsp;extends&nbsp;ABInterface>&nbsp;T&nbsp;transformForType(Class<T>,&nbsp;Object&nbsp;o)&nbsp;{&nbsp;...例如。请注意:显然,当您对要投射的类型没有任何限制时,您可以选择另一个答案并调用SomeClass.class.cast().&nbsp;但是,如果您只想允许特定类型,您可能想要使用这样的transformForType()方法(然后将使用该cast()方法)!
随时随地看视频慕课网APP

相关分类

Java
我要回答