Jakie są korzyści wynikające z posiadania generycznego konstruktora dla klasy generycznej? Specyfikacja Java pozwala na:Korzyści z generycznych konstruktorów
class NonGeneric {
<T> NonGeneric() { }
...
NonGeneric ref = new <String> NonGeneric();
}
Czy można wymyślić realistyczny przykład tego, kiedy zwiększa to bezpieczeństwo w klasie? Jak byłoby lepiej niż na ogół używać Generic?
Rozumiem, że projektanci Javy chcieli, aby konstruktorzy byli bardziej zgodni z metodami. Zważywszy, że konstruktorzy mogą mieć skutki uboczne, konstruktorzy generyczne mogą używać rodzajowych mutować pewne parametry, których referencje nie są zachowane, tak jak w
<T> NonGeneric(T obj, List<T> list) {
list.add(obj);
// Don't hold a reference to list
}
Tak, pozwala na zastąpienie metod generycznych przez konstruktorów (ale dlaczego miałbyś chcieć?). Nigdy nie widziałem tego na wolności. Dla moich pieniędzy jest to komplikacja, której ten język by nie zrobił (tak jak C# zrobił później, gdy wprowadził swoją wersję generycznych Java). –