コメントにより、いくつかの変更を加えましたが、現在は次のようになっています。
public class ValueHolder<T extends Comparable<T>> {
private T currentValue;
public T getCurrentValue() {
return currentValue;
}
public void setCurrentValue(T currentValue) {
this.currentValue = currentValue;
}
}
public class MoreComplexClass<N extends Comparable<N>, T extends ValueHolder<N>> {
private T valueHolder;
private N requiredValue;
public N getRequiredValue() {
return requiredValue;
}
public void setRequiredValue(N requiredValue) {
this.requiredValue = requiredValue;
}
public T getValueHolder() {
return valueHolder;
}
public void setValueHolder(T valueHolder) {
this.valueHolder = valueHolder;
}
}
これで、ジェネリックな方法でも比較を行うことができます (可能なすべての型にキャストしたくないので、これは本質的です。サイドノートでは、これは日付などでも機能するようになりました。):
public class Main {
public static void main(String[] args) {
ValueHolder<Long> longHolder = new ValueHolder<>();
longHolder.setCurrentValue(2L);
MoreComplexClass<Long, ValueHolder<Long>> mcc = new MoreComplexClass<>();
mcc.setRequiredValue(1L);
int compare = mcc.getRequiredValue().compareTo(mcc.getValueHolder().getCurrentValue());
if (compare < 0) {
} else if (compare > 0) {
}else{
}
}
}
私を正しい方向に向けるための解決策の目盛りを残します;)