Java 我定义了一个属于determinate类并实现determinate接口的参数是什么类型的?

Java 我定义了一个属于determinate类并实现determinate接口的参数是什么类型的?,java,Java,什么类型定义一个参数以确保它是definite类并实现definite接口?我在方法定义中使用for参数类型,但我的参数没有扩展MyBaseClass,而是MyBaseClass类型。 我想确保我收到的参数是MyBaseClass类型,并且实现了MyInterface您不能这样做。您要么要求参数为特定的具体类型(这意味着也允许其子类),要么实现特定的接口 对于泛型,您可以强制使用一个或多个类型对参数进行参数化,例如不允许使用子类型,但据我所知,这与您的问题无关 但是,您可以在body中使用ins

什么类型定义一个参数以确保它是definite类并实现definite接口?我在方法定义中使用for参数类型,但我的参数没有扩展MyBaseClass,而是MyBaseClass类型。
我想确保我收到的参数是MyBaseClass类型,并且实现了MyInterface

您不能这样做。您要么要求参数为特定的具体类型(这意味着也允许其子类),要么实现特定的接口

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


但是,您可以在body中使用
instanceof
,也可以与
arg.getClass()

进行比较。我假设您正在询问是否可以执行类似的操作--

public void foo(T bar){

答案是肯定的,你可以。如果你试图将一个参数传递给这个方法,而这个方法是你的基类,但没有实现你的接口,那么代码将无法编译。

@Carlos Correa--不客气。我建议不要试图确定你拥有什么。拥有接口或抽象基类的一个最大优点是你不需要知道你所拥有的类的具体情况。你只需要知道你可以调用接口中指定的方法,它会对你起作用,因为你相信它们会履行接口指定的契约。如果你需要确切地知道传入了什么类,你的设计可能出了问题。
public <T extends YourBaseClass, YourInterface> void foo(T bar) {