gpt4 book ai didi

java - 检查泛型 T 是否实现接口(interface)

转载 作者:太空狗 更新时间:2023-10-29 22:31:35 24 4
gpt4 key购买 nike

所以我在 Java 中有这个类:

public class Foo<T>{
}

在这个类中,我想知道 T 是否实现了某个接口(interface)。

以下代码不起作用,但它是我想要完成的想法:

if(T.class implements SomeInterface){
// do stuff
}

所以我想检查传递给 Foo 的类 T 是否在其签名上有 implements SomeInterface

这可能吗?怎么办?

最佳答案

泛型,奇怪的是,使用 extends对于接口(interface)也是如此。1 你会想要使用:

public class Foo<T extends SomeInterface>{
//use T as you wish
}

这实际上是实现的要求,不是真/假检查

要进行真/假检查,请使用无限泛型(class Foo<T>{)并确保获得 Class<T>所以你有一个 refiable 类型:

if(SomeInterface.class.isAssignableFrom(tClazz));

哪里tClazzjava.lang.Class<T> 类型的参数.

如果得到一个refiable类型的参数,那么无非就是:

if(tParam instanceof SomeInterface){

但这不适用于通用声明。

1如果你想要求扩展一个类和多个接口(interface),你可以这样做:<T extends FooClass & BarInterface & Baz>类(只有一个,因为 Java 中没有多重继承)必须,然后是任何接口(interface),顺序不限。

关于java - 检查泛型 T 是否实现接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18783916/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com