public class ClassGenericParameterized<T> {
public void add(T t1, T t2){
//System.out.println(t1+t2);
System.out.println(Integer.parseInt(t1.toString()) + Integer.parseInt(t2.toString()));
}
public void multiply(T t1, T t2){
System.out.println(Integer.parseInt(t1.toString()) * Integer.parseInt(t2.toString()));
}
public void subtract(T t1, T t2){
System.out.println(Integer.parseInt(t1.toString()) - Integer.parseInt(t2.toString()));
}
public void division(T t1, T t2){
System.out.println(Integer.parseInt(t1.toString())/Integer.parseInt(t2.toString()));
}
public static void main(String[] args) {
ClassGenericParameterized<Integer> ob = new ClassGenericParameterized<Integer>();
ob.add(1,2);
ob.multiply(2, 4);
ob.subtract(15, 6);
ob.division(6, 3);
}
}
Какова логика и необходимость создания класса Generic в Java
при замене оператораСоздание класса Generic в Java
ClassGenericParameterized<Integer> ob = new ClassGenericParameterized<Integer>()
по
ClassGenericParameterized<Double> ob = new ClassGenericParameterized<Double>()
дает
Error(The method add(Double, Double) in the type ClassGenericParameterized<Double> is not applicable for the arguments (int, int))
Как мое мышление это из-за заявление, написанное, как внутри метода добавления в Integer.parseInt(t1.toString()) + Integer.parseInt(t2.toString())
так снова попытался заменить заявление
System.out.println(Integer.parseInt(t1.toString()) + Integer.parseInt(t2.toString()));
по
System.out.println(t1+t2)
, который дает
Error(The operator + is undefined for the argument type(s) T, T).
Тогда как это могло быть общим в реальном смысле? Может ли кто-нибудь объяснить, почему это происходит, и как исправить эту ошибку для реализации моей функциональности?
Проблема в том, что 'int' не может быть автобоксирован до' Double'. –
И вы полностью недопонимаете дженерики, так как фактический тип 'T' не имеет смысла внутри ваших методов. – Andreas
Да, что я уже догадался, как его исправить? @sotirios – MAX