如何使用泛型函数参数

时间:2017-09-29 10:52:30

标签: java generics methods generic-programming

我想对两种类型使用一种方法,我试过这样:

private <T extends Base> boolean isNeeded(String name, T receivedItem) {
    Base item = null;
    if (receivedRequest.getClass().equals(Derived1.class)) {
        item = (Derived1) receivedItem;
    } else if (request.getClass().equals(Derived2.class)) {
        item = (Derived2) receivedItem;
    }
    callMethodDoSomething(item.getData().getSpecificData());
}

但我不知道如何调用仅在派生类中的方法。哪种方法最好,最安全?

2 个答案:

答案 0 :(得分:1)

重载的方法是什么。

boolean isNeeded(String name, Derived1 item) { 
   return callMethodDoSomething(
        item.getData().getSpecificData());
}

boolean isNeeded(String name, Derived2 item) { 
   return callMethodDoSomething(
        item.getData().getSpecificData());
}

答案 1 :(得分:1)

为什么不

boolean isNeeded(Base base) { 
    return callMethodDoSomething(base.getData().getSpecificData());
}

(也跳过'name'参数,因为它没有被使用)