Следующий код является частью проекта, в котором мне нужно определить минимальный/максимальный уровень данных. Проблема в том, что я не знаю, будет ли столбец содержать float или int. Моя попытка сделать общий класс для этого заключается в следующем, но это дает мне ошибку на currentVal > compareVal
. Мой вопрос: где я ошибаюсь?Использование общих типов для вычисления с плавающей точкой и динамически динамически
public <T> List<DataRow> compare(boolean Int) {
for(int i = 0; i<table.getRowCount(); i++){
T currentVal = (T) argument.resolve(row).getValue();
DataRow compare = table.getRow(i);
T compareVal = (T) argument.resolve(compare).getValue();
// if there's a new minimum or there's a new maximum
if((currentVal > compareVal && minimum) || (currentVal < compareVal && maximum)){
row = compare;
rowlist.clear();
rowlist.add(compare);
}
// if there's a duplicate minimum/maximum
else if(currentVal == compareVal)
rowlist.add(compare);
}
return rowlist;
}
, кстати, в первом случае утверждение, минимальное и максимальные являются булевыми, которые истинны либо если минимальным или максимальным должны быть рассчитаны.
Предполагается, что это альтернатива моим текущим методам;
public List<DataRow> floatCompare() {
for(int i = 0; i<table.getRowCount(); i++){
float currentVal = (float) argument.resolve(row).getValue();
DataRow compare = table.getRow(i);
float compareVal = (float) argument.resolve(compare).getValue();
// if there's a new minimum or there's a new maximum
if((currentVal > compareVal && minimum) || (currentVal < compareVal && maximum)){
row = compare;
rowlist.clear();
rowlist.add(compare);
}
// if there's a duplicate minimum/maximum
else if(currentVal == compareVal)
rowlist.add(compare);
}
return rowlist;
}
public List<DataRow> intCompare() {
for(int i = 0; i<table.getRowCount(); i++){
int currentVal = (int) argument.resolve(row).getValue();
DataRow compare = table.getRow(i);
int compareVal = (int) argument.resolve(compare).getValue();
// new minimum or new maximum
if((currentVal > compareVal && minimum) || (currentVal < compareVal && maximum)){
row = compare;
rowlist.clear();
rowlist.add(compare);
}
// duplicate minimum/maximum
else if(currentVal == compareVal)
rowlist.add(compare);
}
return rowlist;
}
Эти функции работают, но я хочу объединить их в общий класс, потому что они оба делают то же самое.
Действительно ли они int/float или они Integer/Float? Что возвращает аргумент .resolve (row) .getValue()? Откуда эта переменная? – Necreaux
Ваш код не компилируется, не могли бы вы его исправить? – igreen
Я знаю, что он не компилируется, извините. Он работает на огромном back-end, содержащем структуру datarows и столбцов. argument.resolve (row) .getValue() возвращает значение, которое является либо float, либо int. Никогда и целое – logos