什么样的类型我定义了一个确定类的参数并实现了确定的接口?

时间:2011-08-15 20:27:37

标签: java

什么类型定义一个参数以确保它是确定类并实现确定的接口?我正在使用< T扩展MyBaseClass& MyInterface的>对于方法定义中的参数类型,但我的参数不扩展MyBaseClass,MyBaseClass类型的IS。 我想确保我所接受的参数是MyBaseClass类型并实现MyInterface

2 个答案:

答案 0 :(得分:1)

你做不到。您要么要求参数具有某种具体类型(这也意味着它的子类也是允许的)或实现某个接口。

使用泛型,您可以强制参数化为一个或多个类型参数化,例如不允许使用子类型,但据我所知,它与您的问题无关。

但是,您可以在身体中使用instanceof并与arg.getClass()进行比较。

答案 1 :(得分:-1)

我会假设你在问你是否可以做这样的事情 -

public <T extends YourBaseClass, YourInterface> void foo(T bar) {

答案是肯定的,你可以。如果你尝试将一个参数传递给YourBaseClass这个方法,但是没有实现YourInterface,那么代码就不会编译。