Java 从非泛型方法调用泛型方法

Java 从非泛型方法调用泛型方法,java,generics,Java,Generics,我有两种方法,看起来像这样。一个是泛型方法,另一个不是。 void a(最终类类型,最终T实例){ } void b(最终类类型,最终对象实例){ 如果(!Objects.requireNotNull(type).isInstance(实例)){ 抛出新的IllegalArgumentException(实例+”不是“+类型”的实例); } //如何调用(类型、实例)? } 如何使用type和instance从b()调用a() a(String.class, new String("hel

我有两种方法,看起来像这样。一个是泛型方法,另一个不是。

void a(最终类类型,最终T实例){
}
void b(最终类类型,最终对象实例){
如果(!Objects.requireNotNull(type).isInstance(实例)){
抛出新的IllegalArgumentException(实例+”不是“+类型”的实例);
}
//如何调用(类型、实例)?
}
如何使用
type
instance
b()
调用
a()

a(String.class, new String("heloo"));

使用通用帮助器方法:

void b(final Class<?> type, final Object instance) {

    if (!type.isInstance(instance)) {
        // throw exception
    }

    bHelper(type, instance);
}

private <T> void bHelper(final Class<T> type, final Object instance) {
    final T t = type.cast(instance);
    a(type, t);
}
void b(最终类类型,最终对象实例){
如果(!type.isInstance(实例)){
//抛出异常
}
bHelper(类型、实例);
}
私有void bHelper(最终类类型、最终对象实例){
最终T=type.cast(实例);
a型(t型);
}

如果
instance
不是
T
(因此可能不需要您之前的检查),将抛出
ClassCastException

关于
type.isInstance(instance)
?是否有理由不能将
b
设为泛型?如果是这样的话,
a
b
会做什么?太好了!非常感谢。我应该读这本书的。
void b(final Class<?> type, final Object instance) {

    if (!type.isInstance(instance)) {
        // throw exception
    }

    bHelper(type, instance);
}

private <T> void bHelper(final Class<T> type, final Object instance) {
    final T t = type.cast(instance);
    a(type, t);
}