Czy ktoś mógłby wyjaśnić, dlaczego to działa w C # .NET 2.0: Nullable<DateTime> foo; if (true) foo = null; else foo = new DateTime(0); ... ale to nie: Nullable<DateTime> foo; foo = true ? null : new DateTime(0); Druga forma powoduje błąd kompilacji „Nie można określić typu wyrażenia warunkowego, ponieważ …
Mam listę, która jest zadeklarowana w ten sposób: List<? extends Number> foo3 = new ArrayList<Integer>(); Próbowałem dodać 3 do foo3. Jednak pojawia się następujący komunikat o błędzie: The method add(capture#1-of ? extends Number) in the type List<capture#1-of ? extends Number> is not applicable for the arguments (ExtendsNumber)
To jest uproszczona wersja omawianego kodu, jedna klasa ogólna używa innej klasy z parametrami typu ogólnego i musi przekazać jeden z typów ogólnych do metody z parametrami varargs: class Assembler<X, Y> { void assemble(X container, Y... args) { ... } } class Component<T> { void useAssembler(T something) { Assembler<String, T> …
To chyba nie jest możliwe, ale mam taką klasę: public class Metadata<DataType> where DataType : struct { private DataType mDataType; } Jest w tym coś więcej, ale nie komplikujmy. Typ ogólny (DataType) jest ograniczony do typów wartości przez instrukcję where. To, co chcę zrobić, to mieć listę tych obiektów metadanych …
Wydawało mi się, że całkiem dobrze rozumiem typy generyczne Javy, ale potem w java.lang.Enum natknąłem się na następujące rzeczy: class Enum<E extends Enum<E>> Czy ktoś mógłby wyjaśnić, jak interpretować ten parametr typu? Dodatkowe punkty za udostępnienie innych przykładów, w których można zastosować podobny parametr typu.
Próbuję przechowywać listę elementów w kolekcji za pomocą wybranego przeze mnie klucza. W Javie po prostu użyłbym Map w następujący sposób: class Test { Map<Integer,String> entities; public String getEntity(Integer code) { return this.entities.get(code); } } Czy istnieje równoważny sposób zrobienia tego w C #? System.Collections.Generic.Hashsetnie używa skrótu i nie mogę …
Wyliczenia Java są świetne. Więc są generyczne. Oczywiście wszyscy znamy ograniczenia tego ostatniego z powodu wymazywania typów. Ale jest jedna rzecz, której nie rozumiem, dlaczego nie mogę utworzyć takiego wyliczenia: public enum MyEnum<T> { LITERAL1<String>, LITERAL2<Integer>, LITERAL3<Object>; } Ten parametr typu ogólnego <T>może z kolei być przydatny w różnych miejscach. …
Kontynuując to pytanie , czy ktoś może wyjaśnić w Scali, co następuje: class Slot[+T] (var some: T) { // DOES NOT COMPILE // "COVARIANT parameter in CONTRAVARIANT position" } Rozumiem różnicę między +Tiw Tdeklaracji typu (kompiluje się, jeśli używam T). Ale jak właściwie napisać klasę, która jest kowariantna w swoim …
Jaka jest różnica między <? super E>i <? extends E>? Na przykład, gdy spojrzysz na klasę, zobaczysz java.util.concurrent.LinkedBlockingQueuenastępujący podpis dla konstruktora: public LinkedBlockingQueue(Collection<? extends E> c) a dla jednej metody: public int drainTo(Collection<? super E> c)
Mam ciąg json, który powinienem zdeserializować do następującej klasy class Data <T> { int found; Class<T> hits } Jak mam to zrobić? To jest zwykły sposób mapper.readValue(jsonString, Data.class); Ale jak mam wspomnieć, co oznacza T?
Mam ogólną funkcję, która wywołuje usługę internetową i serializuje odpowiedź JSON z powrotem do obiektu. class func invokeService<T>(service: String, withParams params: Dictionary<String, String>, returningClass: AnyClass, completionHandler handler: ((T) -> ())) { /* Construct the URL, call the service and parse the response */ } To, co próbuję osiągnąć, jest odpowiednikiem …
Według Java Language Sepecification , 3. edycja: Jest to błąd czasu kompilacji, jeśli klasa ogólna jest bezpośrednią lub pośrednią podklasą klasy Throwable. Chciałbym zrozumieć, dlaczego podjęto taką decyzję. Co jest nie tak z ogólnymi wyjątkami? (O ile wiem, typy generyczne są po prostu cukrem składniowym w czasie kompilacji i zostaną …
Jest to prawdopodobnie pytanie nowicjusza, ale Google, co zaskakujące, nie udzieliło odpowiedzi. Mam tę raczej sztuczną metodę T HowToCast<T>(T t) { if (typeof(T) == typeof(string)) { T newT1 = "some text"; T newT2 = (string)t; } return t; } Pochodząc z tła C ++, spodziewałem się, że to zadziała. Jednak …
Próbuję utworzyć nowy obiekt parametru typu w mojej klasie ogólnej. W mojej klasie Viewmam 2 listy obiektów typu ogólnego przekazanych jako parametry typu, ale kiedy próbuję zrobić new TGridView(), TypeScript mówi: Nie można znaleźć symbolu „TGridView To jest kod: module AppFW { // Represents a view export class View<TFormView extends …
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.