2

クラスのオブジェクト(メソッドにパラメータとして渡される)をリストから返したい。また、リターン中に、オブジェクトをパラメーターとして渡したクラスにキャストする必要があります。私の質問は、以下のようにしようとしたことですが、「classToFind を型に解決できません」というコンパイラ エラーが表示されるため、正しくありません。

private <T extends myClass> T findObject(List<JAXBElement<? extends myClass>> list, 
          Class<? extends myClass> classToFind) {
    for (JAXBElement<? extends myClass> current : list) {
        if(current.getClass() == classToFind) {
               return (classToFind) currentClass; // error "classToFind cannot be resolved to a type"
        }
    }
    return null;
}
4

2 に答える 2

5

と言うreturn classToFind.cast(current)。他のソリューションとは異なり、これはタイプ セーフであり、SuppressWarnings. ただし、明らかに、2 番目のパラメーターはいずれにせよ変更する必要がありますClass<T> classToFind

于 2013-09-23T16:51:00.967 に答える
1

あなたがしていることを承認しなくても、これはうまくいきます:

private JAXBElement<? extends myClass> findObject(List<JAXBElement<? extends myClass>> list, Class classToFind) {
for (JAXBElement<? extends myClass> current : list) {
        if (current.getClass() == classToFind) {
            return current;
        }
    }
    return null;
}
// This returns the actual value encapsulated inthe JAXBElement
private myClass findObject2(List<JAXBElement<? extends myClass>> list, Class classToFind) {
    for (JAXBElement<? extends myClass> current : list) {
        if (current.getClass() == classToFind) {
            return current.getValue();
        }
    }
    return null;
}
于 2013-09-23T16:54:24.890 に答える