如何为某些特定的泛型类型做 if-else?

H42*_*H42 0 java generics polymorphism casting generic-programming

我有MyClass并且我想同时调用mySubMethod(key)mySubMethod2(key)整数,但只调用mySubMethod2(key)非整数。

我试过下面的代码,但不起作用。我也试图改变K == int别的东西,例如K == IntegerK.equals(int)K.equals(Integer)等,但他们都没有工作。我该如何解决?谢谢。

public class MyClass<K,V> {

    public boolean myMethod(K key) {
        if (K == int) {
            mySubMethod(key);
        }else {
            // do nothing
        }
        mySubMethod2(key);
        return false;
    }

    public void mySubMethod(K key) {
        /** something */ 
    }

    public void mySubMethod2(K key) {
        /** something */ 
    }

}
Run Code Online (Sandbox Code Playgroud)

Mat*_*NNZ 5

使用关键字instanceof

if (key instanceof Integer) {
    //...
}
Run Code Online (Sandbox Code Playgroud)

此外,您可以删除空else语句并仅使用 if 语句:

if (key instanceof Integer) {
    mySubMethod(key);
}
Run Code Online (Sandbox Code Playgroud)