Как метод Java диспетчеризирует работу с Дженериками и абстрактными классами?

Несмотря на то, что Shippo вернет номер отслеживания в ответе на транзакцию, в настоящее время, похоже, нет никакого способа отправить информацию отслеживания непосредственно в API PayPal.

Для заказов, связанных с eBay, существует SetShipmentTrackingInfo API, который должен соответствовать требованиям Продавца для отслеживания.

Paypal, похоже, знает об этом запросе, однако PayPal-REST-API-Issues .

7
задан rcreswick 17 January 2009 в 01:35
поделиться

2 ответа

Нет, тип значения не доступен во время компиляции. Следует иметь в виду, что javac только скомпилирует одну копию кода, который будет использоваться для всего возможного T. Учитывая, что, единственный возможный тип для компилятора для использования в getValue () метод является Объектом.

C++ отличается, потому что он в конечном счете создаст несколько скомпилированных версий кода по мере необходимости.

6
ответ дан 7 December 2019 в 01:28
поделиться

Поскольку решение, о какой makeString() использовать сделано во время компиляции и, на основе того, что T мог быть чем-либо, должен быть Object версия.Подумайте об этом. Если Вы сделали Test<String> это должно было бы звонить Object версия. Как таковой все экземпляры Test<T> будет использовать makeString(Object).

Теперь, если Вы сделали что-то как:

public abstract class Test<T extends Integer> {
  ...
}

вещи могли бы отличаться.

2
ответ дан 7 December 2019 в 01:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: