2015-07-22 3 views
1

Я пытаюсь создать Map с ключами, которые являются типами. Чтобы поддерживать общие типы, мне нужно что-то вроде Guava TypeToken.Что такое «переменная свободного типа» в контексте документации Guava TypeToken?

Однако я и я смущен некоторой терминологией в документации конструкторов. Например, второй конструктор:

Создает маркер нового типа T при разрешении переменных свободного типа в контексте declaringClass.

Что такое «переменная типа»? Что такое «declaringClass»?

ответ

2

In the class-level javadoc, они дают пример использования для этого конструктора

//     free type variable 
//       v 
abstract class IKnowMyType<T> { 
    TypeToken<T> type = new TypeToken<T>(getClass()) {}; 
} 
new IKnowMyType<String>() {}.type => String 

Вы не обычно быть в состоянии получить String. Но здесь getClass возвращает анонимный подкласс, который имеет IKnowMyType<String> в качестве своего суперкласса. Поэтому вы можете извлечь String с типичным тикеновым взломом:

Type superclass = getClass().getGenericSuperclass(); 
Type actualTypeArgument = ((ParameterizedType) superclass).getActualTypeArguments()[0]; 
Смежные вопросы