Почему нельзя сравнивать Byte
и Number/Integer
? Я прикрепил свой исходный код. См. Комментарии. Кроме того, почему я должен накладывать 88 байтов, не так ли автоматически с автоматическим боксированием и автоматической распаковкой?Java Generics Compare Number with Byte
package com.practice;
public class Generics<T extends Number>
{
T ob;
public Generics(T i)
{
ob = i;
}
T getObj()
{
return ob;
}
boolean compare(Generics<?> o)
{
if (this.ob == o.ob)
{
return true;
}
else
{
return false;
}
}
public static void main(String[] args)
{
Generics<Number> num = new Generics<>(88);
// Generics<Byte> Byte = new Generics<>(88); //why this does not
// compile?
Generics<Byte> Byte = new Generics<>((byte) 88);
Generics<Integer> integer = new Generics<>(88);
System.out.println(num.compare(integer)); // this is true!!
System.out.println(num.compare(Byte)); // why False?
System.out.println(integer.compare(Byte)); // Why false?
}
}
Это действительно неясно, чего вы хотите достичь, но факт заключается в том, что 'Number' не реализует' Comparable'; так что это ожидается – fge
Это не нормальная функция compareTo(). Я создал свой собственный. Мой вопрос указан в комментариях в нижней части кода. –