检查变量是否为int / Integer类型

时间:2017-03-31 23:49:27

标签: java integer int

我目前正在使用

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;

1 个答案:

答案 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()");
}