bu bazı güçlükleri olmuş ama ben sadece mümkün olduğunca paylaşacaktır bir kaç şey anladım var.
jenerik Benim deneyim ile koleksiyonları ile sınırlıdır, bu yüzden gibi, sınıf tanımlarında bunları kullanmak: veri üyesi içeren
public class CircularArray<E> {
:
private E[] data;
Yapamazsın yapmak ve genel tür dizisi, bu nedenle yöntemi vardır: yapıcısında
@SuppressWarnings("unchecked")
private E[] newArray(int size)
{
return (E[]) new Object[size]; //Create an array of Objects then cast it as E[]
}
:
data = newArray(INITIAL_CAPACITY); //Done for reusability
Bu jenerik jenerik için çalışır, ama ben sıralanabilir olabilecek bir liste gerekli: Comparables bir listesini.
private E[] data;
Ama yeni sınıf java.lang.ClassCastException atar: veri üyesini içeren
public class SortedCircularArray<E extends Comparable<E>> {
//any E that implements Comparable or extends a Comparable class
yapıcı her şey
@SuppressWarnings("unchecked")
private E[] newArray(int size)
{
//Old: return (E[]) new Object[size]; //Create an array of Objects then cast it as E[]
return (E[]) new Comparable[size]; //A comparable is an object, but the converse may not be
}
aynıdır:
data = newArray(INITIAL_CAPACITY); //Done for reusability
İnşallah yardımcı olur ve hata yaparsam daha deneyimli kullanıcılarımızın beni düzelteceğini umarız. Oracle tutorial itibaren [ sic]
Büyük olasılıkla bir Liste ile başlayıp [gerektiğinde bir diziye dönüştürün] (http://docs.oracle.com/javase/6/docs/api/java/util/List.html#toArray (T [])), Java dizileri ile uğraşmaktan hoşlanmıyorum ... ama yine de bu geçerli bir soru. –
@pst: Bunu bir yanıt olarak gönderin. Genel dizileri yayınlamaktan nefret ediyorum (bir cevapta son denemem yanlıştı çünkü kırık jeneriklerin ne olduğunu unuttum). LinkedHashMap map_array [] = new LinkedHashMap [2] kullanırken –
nneonneo