web-dev-qa-db-ja.com

<T>をタイプに解決できませんか?

Jacksonjsonライブラリを使用してjson文字列をList<Someclass>に変換したいと思います。

public static List<T> toList(String json, Class<T> type, ObjectMapperProperties objectMapperProperties){

        ObjectMapper objectMapper = ObjectMapperFactory.getObjectMapper(objectMapperProperties);

        try {
            return objectMapper.readValue(json, objectMapper.getTypeFactory().constructCollectionType(List.class, type));
        } catch (JsonParseException e) {
            e.printStackTrace();
        } catch (JsonMappingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

したがって、Attribute.classtypeとして渡すと、List<Attribute>を返す必要があります。

ただし、これによりコンパイル時エラーが発生します

T cannot be resolved to a type

ジェネリックスの部分はここでははっきりしないと思います。どんな助けでも大歓迎です。

8

ジェネリックメソッドで最初にTを宣言する必要があります。あなたの場合は次のようになります:

public static <T> List<T> toList(String json, Class<T> type,  ObjectMapperProperties objectMapperProperties)

詳細については、Oracleのドキュメントで一般的なメソッドを確認してください。

https://docs.Oracle.com/javase/tutorial/extra/generics/methods.html

15
Sach141