public class MyList{
private Object[] data;
private int index=0;
public MyList(int size){
data=new Object[size];
}
private void expand(){
Object[] data2=new Object[data.length*2];
System.arraycopy(data,0,data2,0,data.length);
data=data2;
}
public void add(Object o){
if (data.length==index) expand();
data[index]=o;
index++;
}
public void add(int pos,Object o){
if (data.length==index) expand();
for(int i=index;i>pos;i--){
data[i]=data[i-1];
}
data[pos]=o;
index++;
}

public void change(int pos,Object o){
data[pos]=o;
}

public Object remove(int pos){
Object o=data[pos];
index--;
for(int i=pos;i<index;i++){
data[i]=data[i+1];
}
return o;
}
public int size(){
return index;
}
public Object get(int pos){
return data[pos];
}
public void clear(){
index=0;
}
public boolean isEmpty(){
return index==0;
}
public Object[] toArray(){
return data;
}
}
public class MemoryTest {
private static MyList list ;
/*
 * 判断内存是否存在
 */
public static boolean findMemory(String a){ for(int i=0;i<list.size();i++){
String o=(String)list.get(i); //这出现强制类型错误,我想用传值和null比较是否相等
if (o.equals(a)) return false;
}
return true;
}

public static void disPlay(){
for(int i=list.size()-1;i>=0;i-- ){
Object o=list.get(i);
System.out.println(i+"   "+o);
}
}
public static void main(String[] args) throws IOException { System.out.print("输入>");

BufferedReader in = new BufferedReader
(new InputStreamReader(System.in));
int memory_i=Integer.parseInt(in.readLine());

list=new MyList(memory_i); for(int i=0;i<memory_i;i++){
list.add("null");
}
list.change(3, 8);
int a=4096/2000;
String s=Integer.toString(a);
System.out.println(s);
System.out.println(findMemory(s));

}
}

解决方案 »

  1.   

    Object o=list.get(i); 
    Object --> String 当然会报错了。
      

  2.   

     list里的对象在构造的时候是OBJECT,不可能转换成string
     强制类型转化虽然说的是将父类转换成子类,但是前提是父类在构造是用的是子类才能转换,如
      如定义了两个类型 FatherA 和 SonA 
        FatherA a = new SonA();
        SonA b = (SonA)a;  可以进行转换
         
        FatherA a = new FatherA();
        SonA b = (SonA)a; 不可以转换