2014-10-17 4 views
1

Пожалуйста, несите новые в java.Печать значения параметризованного типа в java

Я пытаюсь понять, дженерики это было гладко, пока я не пришел к этому:

Pair<Integer, GenericBox<String>> p2 = new OrderedPair<>(1, new GenericBox<>("Parametized Type"); 
p2.print(); 

Метод печати:

public void print() { 
    System.out.println(this.key + ", " + this.value); 
} 

Это работает отлично, за исключением, когда я использовал parametized аргумент типа.

Пример вывода:

1, [email protected] 

Ожидаемый результат:

1, Parametized Type 

Пробовал это: How to get type parameter values using java reflection? но это только дает мне K, который является параметром OrderedPair ''

Это мой первый вопрос здесь, если есть вещи, которые я пропускаю, или вещи, которые неясны, отзывы очень ценятся.

+1

Вам необходимо переопределить toString вашего класса GenericBox –

ответ

2

Это не имеет ничего общего с дженериками. С

this.value 

вы предположительно со ссылкой на GenericBox объекта, переданного в OrderedPair конструктора. Этот класс (GenericBox) не должен иметь объявленного метода toString(). Поэтому он наследует и использует Object#toString().

Разработчик должен написать свою собственную реализацию toString() и вернуть любое значение String, которое они считают подходящим. Here's what the official tutorials have to say.