我正在尝试创建一个通用的InputVerifier,它检查JComponent中的数据是否在指定范围内。为此,我制作了我的泛型类型extend Comparable<>确保可以进行比较。
我所关注的是以下两件事:
DataType myData = new DataType(text);
这是我现在的课程。我把它作为抽象的,所以子类必须知道返回文本所涉及的JComponent的类型,然后如何建立可比较的类型进行比较。考虑到可能存在的不同类型的JComponents和Comparable类型,这可以导致许多排列。有没有办法消除我上面提到的一个或两个问题?
import javax.swing.InputVerifier;
import javax.swing.JComponent;
public abstract class InputRangeVerifier<DataType extends Comparable<DataType>> extends InputVerifier {
private DataType m_min;
private DataType m_max;
public InputRangeVerifier(DataType min, DataType max) {
m_min = min;
m_max = max;
}
@Override
public boolean verify(JComponent component) {
String componentText = getComponentText();
DataType comparable = getComparableValue(componentText);
boolean greaterThanOrEqualToMin = comparable.compareTo(m_min) > 0;
boolean lessThanOrEqualToMax = comparable.compareTo(m_max) < 0;
boolean isInRange = greaterThanOrEqualToMin && lessThanOrEqualToMax;
return isInRange;
}
public abstract String getComponentText();
public abstract DataType getComparableValue(String text);
}