Czasami słyszałem, że w przypadku leków generycznych Java nie radziła sobie dobrze. (najbliższa referencja, tutaj ) Przepraszam za mój brak doświadczenia, ale co by je polepszyło?
Po nieudanej kompilacji czegoś podobnego do następującego: public class Gen<T> where T : System.Array { } z błędem Ograniczenie nie może być klasą specjalną `` System.Array '' Zacząłem się zastanawiać, czym właściwie są „specjalne zajęcia”? Ludziom często wydaje się, że popełniają ten sam rodzaj błędu, gdy określają System.Enumw ogólnym ograniczeniu. …
Jaki jest prawidłowy sposób zwracania Voidtypu, jeśli nie jest to typ pierwotny? Na przykład. Obecnie używam null, jak poniżej. interface B<E>{ E method(); } class A implements B<Void>{ public Void method(){ // do something return null; } }
Podam przykład: Mam ogólną definicję klasy / interfejsu: interface IGenericCar< T > {...} Mam inną klasę / interfejs, który chcę powiązać z klasą powyżej, na przykład: interface IGarrage< TCar > : where TCar: IGenericCar< (**any type here**) > {...} Zasadniczo chcę, aby mój ogólny IGarrage był zależny IGenericCar, niezależnie od …
.NET oferuje ogólny kontener listy, którego wydajność jest prawie identyczna (zobacz pytanie Wydajność tablic a listy). Jednak są one zupełnie inne w inicjalizacji. Tablice są bardzo łatwe do zainicjowania z wartością domyślną iz definicji mają już określony rozmiar: string[] Ar = new string[10]; Co pozwala na bezpieczne przypisywanie losowych przedmiotów, …
Załóżmy, że mam ogólny interfejs: interface MyComparable<T extends Comparable<T>> { public int compare(T obj1, T obj2); } I metoda sort: public static <T extends Comparable<T>> void sort(List<T> list, MyComparable<T> comp) { // sort the list } Mogę wywołać tę metodę i przekazać jako argument wyrażenie lambda: List<String> list = Arrays.asList("a", …
Mam więc tę klasę: public class Foo<T> where T : ??? { private T item; public bool IsNull() { return item == null; } } Teraz szukam ograniczenia typu, które pozwala mi użyć wszystkiego jako parametru typu, który może być null. Oznacza to wszystkie typy odwołań, a także wszystkie Nullable( …
Podczas czytania oficjalnego samouczka Java na temat generycznych stwierdziłem, że możesz ograniczyć argument type (w tym przypadku T), aby rozszerzyć klasę i / lub więcej interfejsów za pomocą operatora `` and '' ( &) w następujący sposób: <T extends MyClass & Serializable> I otrzymuje &się ,(przez pomyłkę i wciąż działa, …
Mam kilka pytań dotyczących ogólnych symboli wieloznacznych w Javie: Jaka jest różnica między List<? extends T>i List<? super T>? Co to jest ograniczony symbol wieloznaczny, a co nieograniczony symbol wieloznaczny?
Nie mogę uzyskać listy typu ogólnego z klasy niestandardowej (obroty): val turnsType = TypeToken<List<Turns>>() {}.type val turns = Gson().fromJson(pref.turns, turnsType) powiedziało: cannot access '<init>' it is 'public /*package*/' in 'TypeToken'
Chcę napisać funkcję, która zwraca każdą pozycję w pozycji, Listktóra nie jest pierwszą ani ostatnią pozycją (punkt pośredni). Funkcja pobiera dane ogólne List<*>jako dane wejściowe. Wynik powinien zostać zwrócony tylko wtedy, gdy elementy listy są typu Waypoint: fun getViaPoints(list: List<*>): List<Waypoint>? { list.forEach { if(it !is Waypoint ) return null …
Podczas moich dni w C ++ uczono mnie o złu operatora rzutowania w stylu C, na początku z przyjemnością odkryłem, że w Javie 5 java.lang.Classnabyłem castmetodę. Pomyślałem, że wreszcie mamy OO sposób radzenia sobie z castingami. Okazuje się, że Class.castto nie to samo, co static_castw C ++. To jest bardziej …
Nie jestem pewien, czy w pełni rozumiem różnicę między SomeGeneric<*>i SomeGeneric<Any>. Myślę, że *reprezentuje wszystko (symbol wieloznaczny) i Anyreprezentuje obiekt, z którego dziedziczą WSZYSTKIE obiekty. Wygląda więc na to, że powinny być takie same, ale czy tak jest?
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.