java检查变量是否为int/Integer类型
我目前正在使用
if (element instanceof Integer)
return true;
else
return false;
但如果
String element = "5";
它会变成现实。我只想在元素真的是整数值时返回true
我这样做的动机是在学校做的一个练习,我必须做一个抽象的超级课堂观察者。java中有一个列表元素,然后是我的子类Observable HighscoreList。java有一个acceptElement(Object element)方法,如果elements是该子类的正确数据类型,则该方法返回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考试。它告诉我,我应该为“observableList.addElement(“5”);”抛出一个非法的argumentException
# 1 楼答案
我错过了比赛
在addElement(对象元素)-方法中。我只在addElement(int-index,Object-element)方法中有它
超级课堂现在看起来更像这样: