我有一个Object o
,可以将其强制转换为类型A和类型B。
我需要一个带有类型的函数transformForType(Type t, Object o)
,让我们说A或B并检查它的类型并对其进行处理以对其进行转换。
该函数的用法类似于:B result = tranformForType(B.class, o);
我的问题是定义tranformForType
函数的方法是什么,以及如果可能的话,使用泛型类型的最好方法是什么?
问候。
答案 0 :(得分:4)
Class
类已经具有在运行时强制转换对象的方法-the cast
method:
将对象投射到此
Class
对象表示的类或接口中。
您只需要调用它。它将像普通演员一样抛出ClassCastException
。
B result = B.class.cast(o);
答案 1 :(得分:0)
一种简单的方法是:
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()
方法)!