我目前正在使用
if (element instanceof Integer)
return true;
else
return false;
但是如果
String element = "5";
它将返回true。如果元素TRULY是一个整数值,我只希望它返回true。
我的动机是在学校练习,我必须使用List元素创建一个抽象的超类ObservableList.java,然后我的子类Observable HighscoreList.java有一个acceptElement(Object element)方法返回如果elements是该子类的正确dataype,则返回true,并且从addResult(int element)方法调用该方法。在我的情况下,我需要整数,并且字符串或字符被掩盖为整数值是不正确的。
子类方法:
boolean acceptsElement(Object element) {
if (element instanceof Integer)
return true;
else
return false;
}
public void addResult(int element) {
int elementsInt;
if (acceptsElement(element)) {
for (int i = 0; i < maxSize; i++) {
try {
// parsing to int since elements type Object
elementsInt = (int) elements.get(i);
} catch (IndexOutOfBoundsException e) {
elementsInt = 0;
}
// adds element to correct position
if (element < elementsInt || elementsInt == 0) {
elements.add(i, element);
// update listeners with new list and position of change
for (ObservableListListener listListener : listListeners) {
listListener.listChanged(this, i);
}
// removes elements outside of maxSize
if (elements.size() >= maxSize) {
for (int j = maxSize; j < elements.size(); j++) {
elements.remove(j);
}
}
break;
}
}
} else
throw new IllegalArgumentException("!acceptsElement()");
}
超类方法:
public List<Object> elements;
public List<ObservableListListener> listListeners;
abstract boolean acceptsElement(Object element);
protected void addElement(int index, Object element) {
if (this.acceptsElement(element)) {
elements.add(index, element);
// update listeners with new list and position of change
for (ObservableListListener listListener : listListeners) {
listListener.listChanged(this, index);
}
} else
throw new IllegalArgumentException("!acceptsElements()");
}
恐怕我在如何组织一切方面都非常紧张。我需要传递一个jTest程序。它告诉我,我应该为&#34; observableList.addElement抛出一个IllegalArgumentException(&#34; 5&#34;);&#34;
答案 0 :(得分:1)
我错过了
else
throw new IllegalArgumentException("!acceptsElement()");
在addElement(Object element)-method中。我只在addElement(int index,Object element)-method中使用它。
超级班现在看起来更像是这样:
public List<Object> elements;
public List<ObservableListListener> listListeners;
abstract boolean acceptsElement(Object element);
protected void addElement(int index, Object element) {
if (acceptsElement(element)) {
elements.add(index, element);
// update listeners with new list and position of change
for (ObservableListListener listListener : listListeners) {
listListener.listChanged(this, index);
}
} else
throw new IllegalArgumentException("!acceptsElement()");
}
protected void addElement(Object element) {
if (acceptsElement(element)) {
elements.add(element);
// update listeners with new list and position of change
for (ObservableListListener listListener : listListeners) {
listListener.listChanged(this, elements.indexOf(element));
}
} else
throw new IllegalArgumentException("!acceptsElement()");
}