2

クラスキャストの問題があります。これの投げ方を教えてください。ArrayList<CharSequence>私は自分のCharSequence[]名前付きでこれをしたいContacts

java.lang.ClassCastException(Android の場合):

CharSequence[] Contacts;
List<CharSequence> contacts = new ArrayList<CharSequence>();


Contacts = (CharSequence[]) contacts.toArray();

for(CharSequence p : contacts) {
    Log.i("log_tag", "AAAAAAAAAAAAAAAAAAA" + p);
}
4

2 に答える 2

5

これを試して:

Contacts = contacts.toArray(new CharSequence[contacts.size()]);

Contactsただし、名前を別の名前に変更することをお勧めしますcontactsArray。これには 2 つの理由があります。1) Java 変数名は通常、小文字で始まります。2)という名前の別の変数がcontactsあり、2 番目を に定義すると、2 つの名前は最初の文字の大文字と小文字が異なるだけContactsなので、コードが読みにくく、理解しにくくなります。


関連ドキュメント:

于 2012-10-21T12:37:20.963 に答える
3

toArray()型の配列を返しますObject[]。とObject[]CharSequence[]は異なるタイプです。の配列がCharSequence必要な場合は、次のコードを使用する必要があります。

contactArray = contacts.toArray(new CharSequence[contacts.size()]);

詳細については、javadocを参照してください。

は Java の命名規則に違反していること、および という名前の変数とContactsという名前の変数という 2 つの変数を持つことは、実際には悪い考えであることに注意してください (コードをできるだけ読みにくくしたくない場合を除きます)。contactsContacts

于 2012-10-21T12:37:30.187 に答える