Ben nesneler kendi kopyalarını yapabilirsiniz sağlayan bir arayüz:Altsınıflar
public interface Duplicable<T extends Duplicable<T>> {
public T duplicate();
}
Şimdi
class X implements Duplicable<X>
var ama aynı zamanda X.
genişleten bir sınıf Y sahipBaşka bir genel sınıfa gerek duymadan, bu bir sorun değil:
public class DoStuffWithDuplicable<T extends Duplicable<T>>
Ben yüzden
public class DoStuffWithDuplicable<T extends Duplicable<? super T>>
çalıştı
X. onu devralır beri Duplicable<Y>
ama Duplicable<X>
uygulamıyor beri Y kullanarak DoStuffWithDuplicable genel bir sürümünü kullanın .. ama bu araçlar Daha sonra kod gövdesinde güvenli olmayan bir dökümün
. Ayrıca, sınıf parametreleri daha kıvrımlıdır ve sınıfın kullanımını anlamak daha da zorlaşır. Bu problemin nasıl geçeceği hakkında bir fikrin var mı?
bu ifadeleri Can:
bir diğer seçenek kütüphanede güvensiz yayınları kullanmanızı ve elle türlerini kontrol etmek olurdu Yinelenebilir'i değil, X'i miras aldığından çoğaltılamaz. " ? – tbsalling
Üzgünüz, biçimlendirme problemi – phil
Bir not olarak, bu, bazı bilgisayar bilimcilarının tüm sınıfların ya “soyut” ya da “final” olması gerektiğini söylemesinin tam bir nedenidir. Sen de 'equals' ile sorunlara koşacaksın; somutlaşabilir bir "X" olanı ortadan kaldırmak için belki refactor olabilir misiniz? – chrylis