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);
}