Я думаю, что в этом разделе учебника Generics объясняется ситуация (мой акцент):
«Вам нужно убедиться, что общий API не является чрезмерно ограничительным, он должен продолжаться для поддержки первоначального контракта API. Рассмотрим еще несколько примеров из java.util.Collection. Пред-общий API выглядит так:
interface Collection {
public boolean containsAll(Collection c);
...
}
Наивная попытка его генерировать:
interface Collection<E> {
public boolean containsAll(Collection<E> c);
...
}
Хотя это, безусловно, безопасный тип, он не соответствует оригинальному контракту API. Метод containsAll () работает с любым входящим набором. Он будет успешным только в том случае, если входящая коллекция действительно содержит только экземпляры из E, но:
Идентификаторы, которые вы читаете, одинаковы, за исключением того, что ваш USB-считыватель RFID, кажется, считывает только 4 байта 7-байтового UID. Поскольку ваш USB-считыватель не поддерживает какие-либо другие форматы, вы не сможете вывести оставшиеся 3 байта из ниоткуда. Тем не менее, вы можете легко отрубить последние три байта UID в своем ионном приложении:
this.nfc.bytesToHexString(event.tag.id.slice(0, 4))
Тогда вы получите то же значение, что и для формата «№ 8 в обратном направлении HEX».