目标是制作自定义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;
}
}
}
答案 0 :(得分:1)
像这样的表达式的问题
toAdd instanceof arrayType
instanceof
的右手参数必须是文字类,例如
toAdd instanceof Person
如果您要检查的类型未在编译类型中修复,则通常需要isInstance
方法来测试值的动态类型。
arrayType.isInstance(toAdd)