验证类型时遇到问题

时间:2018-03-11 22:47:46

标签: java instanceof

目标是制作自定义ArrayList。到目前为止它仍然有用,但是,一旦我尝试检查以确保只将初始化类型输入到数组中,我就开始遇到问题(arrayType无法解析为类型 - 我正在使用eclipse)。

到目前为止我的代码:

public class MyArrayList implements MyList
{
    private Object[] theList; // array of objects
    private Class<?> arrayType;
    /**
     * Constructor - start with an empty array
     */
    public MyArrayList()
    {
       theList = new Object[0];
       arrayType = Object.class.getClass();
    }


    /**
     * Constructor - start with an empty array
     */
    public MyArrayList(Object type)
    {
        arrayType = type.getClass();
        theList = new Object[0]; 
    }


    /**
     * Adds a new element at the end of the list.
     * @param the object to add. Validation is done to ensure correct type.
     * @return true if element successfully added, false if parameter is null
     */
    public boolean add(Object toAdd){


        //THIS IS NOT WORKING

        if (!(toAdd instanceof arrayType.getClass())){
            return false;
        }




       if ((toAdd != null)) {
           int newSize = size() + 1;
           Object[] tempList = new Object[newSize];
           for (int i = 0; i < size(); i++) {
               tempList[i] = theList[i];
           }
           tempList[newSize-1] = toAdd;
           theList = tempList;
           return true;

       }else {
        return false;
       }
    }
}

1 个答案:

答案 0 :(得分:1)

像这样的表达式的问题

toAdd instanceof arrayType

instanceof的右手参数必须是文字类,例如

toAdd instanceof Person

如果您要检查的类型未在编译类型中修复,则通常需要isInstance方法来测试值的动态类型。

arrayType.isInstance(toAdd)