什么类型定义一个参数以确保它是确定类并实现确定的接口?我正在使用< T扩展MyBaseClass& MyInterface的>对于方法定义中的参数类型,但我的参数不扩展MyBaseClass,MyBaseClass类型的IS。 我想确保我所接受的参数是MyBaseClass类型并实现MyInterface
答案 0 :(得分:1)
你做不到。您要么要求参数具有某种具体类型(这也意味着它的子类也是允许的)或实现某个接口。
使用泛型,您可以强制参数化为一个或多个类型参数化,例如不允许使用子类型,但据我所知,它与您的问题无关。
但是,您可以在身体中使用instanceof
并与arg.getClass()
进行比较。
答案 1 :(得分:-1)
我会假设你在问你是否可以做这样的事情 -
public <T extends YourBaseClass, YourInterface> void foo(T bar) {
答案是肯定的,你可以。如果你尝试将一个参数传递给YourBaseClass这个方法,但是没有实现YourInterface,那么代码就不会编译。