所以我在Java中有这个课程:
public class Foo<T>{
}
在这个类中,我想知道T是否实现某些接口。
以下代码不起作用,但这是我要完成的工作的主意:
if(T.class implements SomeInterface){
// do stuff
}
所以我想检查T
传递给Foo 的类是否具有implements SomeInterface
其签名。
可能吗?怎么样?
奇怪的是,泛型也extends
用于接口。1您将要使用:
public class Foo<T extends SomeInterface>{
//use T as you wish
}
这实际上是实现的要求, 而不是true / false check 。
为了进行真/假检查,请使用无限制的generics(class Foo<T>{
)并确保获得a,Class<T>
以便您具有可靠的类型:
if(SomeInterface.class.isAssignableFrom(tClazz));
哪里tClazz
是类型的参数java.lang.Class<T>
。
如果您得到的是可靠类型的参数,那么无非就是:
if(tParam instanceof SomeInterface){
但这仅适用于泛型声明。
1如果要扩展一个类和多个接口,则可以执行以下操作:<T extends FooClass & BarInterface & Baz>
该类(仅一个,因为Java中没有多重继承)必须 首先进行 ,然后以任何顺序进行任何接口。
问题内容: 我是Java泛型的新手,来自.NET世界,我习惯于编写这样的方法: 该方法接受通用类型的对象,并检查该对象是否实现通用接口的 特定 版本,在这种情况下为。 现在,在Java中,我可以执行以下操作: 但 Java并 没有 让我做 据我所知,由于类型擦除,通常在Java中,此类将由类对象处理,我们将执行以下操作: 但是由于我要检查的类型是通用接口,所以您不能这样做: 那么,如何在Java中
我在TypeScript中使用一个接口来定义一个函数,该函数仅在扩展基类的一些类上可用。这是我到目前为止的代码的简化版本: 现在,问题是我会添加更多的“行走”动物,这样移动动物的功能就会变得太大而无法控制。我想做的事情是这样的: 但是,“implements”检查不起作用,在使用接口时,我找不到与“instanceof”等效的。在Java中,“instanceof”的使用似乎可以在这里使用,但Ty
问题内容: 我已经读过“ EffectiveGo”和其他类似的问答:golang接口符合性编译类型检查,但是我仍然无法正确理解如何使用此技术。 请参见示例: 如果实现了接口,是否有任何简单的方法(例如,不使用反射)检查值? 问题答案: 如果您不知道值的类型,则只需检查值是否实现了接口。如果类型已知,则该检查由编译器自动完成。 如果您仍然想进行检查,则可以使用您提供的第二种方法进行检查: 在编译时会
这里有一个示例代码,没有看明白, 1、请问下,泛型嵌套<PropsWithChildren<CreateFormProps>>,这里的<CreateFormProps> 是一个interface,可以是type吗? 2、<PropsWithChildren<CreateFormProps>> 代表什么意思呢?是否代表泛型:<PropsWithChildren> 实现了接口interface Cre
问题内容: 如何检查某个类是否实现接口?当有: 如何检查是否实现接口? 该方法是否被正确覆盖,因此可以返回新创建的方法? 问题答案: 对于一个实例 然后做 对于Class实例
好了, 我有一个标记接口: 然后我有一个类实现这个接口: 现在假设我有一个持有类MePOJO的引用: 那么,我如何通过使用来确定类是否实现了?