2013-02-18 1 views
3

getStrings() 메서드에서 ClassCastException을 얻게됩니다. 아무도 모델을 가져와야하는 방법을 말해 줄 수 있습니까? 감사!Object []에서 String []으로 캐스팅하면 ClassCastException이 발생합니다.

public class HW3model extends DefaultListModel<String> 
{   
    public HW3model() 
    { 
     super(); 
    } 

    public void addString(String string) 
    { 
     addElement(string); 
    } 

    /** 
    * Get the array of strings in the model. 
    * @return 
    */ 
    public String[] getStrings() 
    { 
     return (String[])this.toArray(); 
    } 
}  
+0

을 일하는 것이 있는지

public String[] getStrings() Object[] oValues= toArray(); String[] sValues = new String[oValues.length]; for (int index = 0; index < oValues.length; index++) { sValues[index] = oValues[index].toString(); } return sValues; } 

+0

DefaultListModel의 메소드입니다. 나는 이것을 사용해서는 안된다. –

+1

그는 수퍼 클래스의 방법을 사용하고있다. 그러나 String 배열이 아니라 Object 배열을 반환합니다. 그래서 그것이 당신의 문제입니다. 그것이 무엇인지, 객체의 배열을 다루십시오. –

답변

2

toArray에 의해 반환되는 값이 Object 배열 . 이다

는, 그들은 다음 다시 Object[]를 통해 반환 Object[]하지 String[]로 선언했습니다.

즉, String 배열로 입력 할 수 없습니다. 단순히 잘못된 것입니다.

당신이 시도하고`toArray` 방법 인 경우 그

String[] stringArrayX = Arrays.copyOf(objectArrayX, objectArrayX.length, String[].class); 
+0

downvote를 적용해야하는 이유에 대해 의견을 제시 할 수없는 유권자의 용기에 감탄해야합니다. 포스터 나 장래 포스터가이 질문이나 미래 질문을 개선하는 데 도움이되는 것은 없습니다. – MadProgrammer

1

당신은 다른 사람의 형태로 하나 개의 배열을 캐스팅 할 수없는, 그래서 당신은 당신이 당신의 자신의 배열을 만들 수 있도록해야 할 것 :

public String[] getStrings() { 
    String[] result = new String[getSize()]; 
    copyInto(result); 
    return result; 
} 
1

예를

에 대한 ... 값을 직접 복사해야 할거야?
관련 문제