Ben ... şaşırmış ama bu derler:Java: Null olmayan bir dizi somut parametrelenmiş türlere neden başvuru yapabilirim?
İştepublic <T extends Database> ColMetaData<T>[] getTableColumnsAsEnums() {
Class<? extends ColMetaData> cls = this.columnsEnumToken();
return cls.<ColMetaData<T>[]>getEnumConstants(); }
columnsEnumToken için yöntemdir:
// Returns a class token for an enum class
public Class<? extends ColMetaData> columnsEnumToken() {
return this.e_colsToken;
}
(Ben ikinci hat aşağıda derleme değil neden görebilirsiniz sanırım)
bazı sorular:
bu yöntem "tipi mi kasa"?
bu hat derleme yok Neden:
Class<? extends ColMetaData> cls = this.columnsEnumToken();
Ama bu, çünkü uyumsuz türleri derlenmeyecektir:
Class<? extends ColMetaData<T>> cls = this.columnsEnumToken();
Neden yasal yöntemle
getTableColumnsAsEnums()
için geri dönmek için bir beton parametreli tip,ColMetaData<T>[]
bir dizi. Bunların kesinlikle verboten olduğunu düşünmüştüm, çünkü onların güvenli bir şekilde çalışmasını sağlamak için çalışma zamanı yoktu.
'cls. []> getEnumConstants()' ın kendi başına derlemesi yapılmamalıdır çünkü bu genel bir yöntem değildir. –
İlk mermi noktasını yanıtlamak için yeterli bilgi yok: columnsEnumToken() 'nedir? Uyumsuz tür hata mesajı tam olarak nedir? –
Evet, görünüşe göre ben herhangi bir sınıf açılı parantez içine 'return' ifadesi koymak ve çalışacaktır. Muhtemelen bir hatayı rapor etmelidir, fakat tip bilgisinin basitçe görmezden geldiği görülmektedir. – scottb