猿问

将泛型参数传递给方法

我对 Java 中的泛型编程有一个小问题。有没有办法检查传递给方法的参数的类型?我想比较调用该方法的实例的类型以及传递给它的参数。


如果它们不相同,则应停止该方法的操作(保护种类)。


public void homeMatch(SportTeam<Type> visitors){


    if(the type of visitors and this-object are not the same){

         //do this

    }

    else{

         //do something different

    }

}


狐的传说
浏览 89回答 3
3回答

FFIVE

您不能Type在运行时操作,因为它会被编译器擦除。它仅存在于用于设计目的的源代码中。更具体地说,这个方法签名将被编译成类似的东西public&nbsp;void&nbsp;homeMatch(SportTeam&nbsp;visitors)

守着一只汪

如果您真的想要进行检查,您可以做的是将类参数添加到函数参数中。然后将 classParameter 与 this 的类进行比较。这会起作用,因为访问者具有与 typeClass 相同的泛型类型。public<Type> void homeMatch(Class<Type> typeClass, SportTeam<Type> visitors){&nbsp; &nbsp; if (typeClass.getClass() == this.getClass()){&nbsp; &nbsp; }}

凤凰求蛊

如果我理解正确,您必须使用 instanceof 。像这样:if&nbsp;(visitors&nbsp;instanceof&nbsp;Type)&nbsp;{&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;action &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
随时随地看视频慕课网APP

相关分类

Java
我要回答