Czy istnieje czysta metoda wyśmiewania klasy za pomocą ogólnych parametrów? Powiedz, że muszę wyśmiewać klasę, Foo<T>którą muszę przekazać do metody, która oczekuje Foo<Bar>. Z łatwością mogę wykonać następujące czynności: Foo mockFoo =
Czy istnieje czysta metoda wyśmiewania klasy za pomocą ogólnych parametrów? Powiedz, że muszę wyśmiewać klasę, Foo<T>którą muszę przekazać do metody, która oczekuje Foo<Bar>. Z łatwością mogę wykonać następujące czynności: Foo mockFoo =
W Internecie można znaleźć: Wyższy rodzaj == typ konstruktora? class AClass[T]{...} // For example, class List[T] Niektórzy twierdzą, że jest to typ bardziej uporządkowany, ponieważ streszcza typy, które byłyby zgodne z definicją. Wyższe typy pokrewne to typy, które pobierają inne typy i...
Jaki jest powód, dla którego Java nam na to nie pozwala private T[] elements = new T[initialCapacity]; Zrozumiałem, że .NET nie pozwala nam na to, ponieważ w .NET masz typy wartości, które w czasie wykonywania mogą mieć różne rozmiary, ale w Javie wszystkie rodzaje T będą odwołaniami do obiektów,...
Mam problem z nawigacją w regule Javy w celu wnioskowania o ogólnych parametrach typu. Rozważ następującą klasę, która ma opcjonalny parametr listy: import java.util.Collections; import java.util.List; public class Person { private String name; private List<String> nicknames; public...
Mam; List<String> stringList = new ArrayList<String>(); List<Integer> integerList = new ArrayList<Integer>(); Czy istnieje (łatwy) sposób na uzyskanie ogólnego typu
Mam kilka metod, które zwracają różne listy ogólne. Istnieje w .net jakakolwiek metoda statyczna klasy lub cokolwiek, aby przekonwertować dowolną listę na dane? Jedyne, co mogę sobie wyobrazić, to użyć Reflection, aby to zrobić. JEŚLI mam to: List<Whatever> whatever = new...
Natrafiam na kod Java w następujący sposób: public interface Foo<E> {} public interface Bar<T> {} public interface Zar<?> {} Jaka jest różnica między wszystkimi trzema powyższymi i jak nazywają ten typ deklaracji klasy lub interfejsu w
public class EnumRouteConstraint<T> : IRouteConstraint where T : struct { private static readonly Lazy<HashSet<string>> _enumNames; // <-- static EnumRouteConstraint() { if (!typeof(T).IsEnum) { throw new ArgumentException(
Czy jest jakaś praktyczna różnica między a SortedList<TKey,TValue>a a SortedDictionary<TKey,TValue>? Czy są jakieś okoliczności, w których używałbyś jednego, a nie
Mam ogólną metodę, która ma dwa ogólne parametry. Próbowałem skompilować poniższy kod, ale to nie działa. Czy jest to ograniczenie .NET? Czy można mieć wiele ograniczeń dla różnych parametrów? public TResponse Call<TResponse, TRequest>(TRequest request) where TRequest : MyClass, TResponse :...
Czytałem A Tour of Scala: Abstract Types . Kiedy lepiej używać typów abstrakcyjnych? Na przykład, abstract class Buffer { type T val element: T } raczej że generyczne, na przykład abstract class Buffer[T] { val element:
W tym pytaniu jest dobra dyskusja na temat Generics i tego, co naprawdę robią za kulisami , więc wszyscy wiemy, że Vector<int[]>jest to wektor tablic liczb całkowitych i HashTable<String, Person>tabela, której klucze to ciągi znaków i wartości Person. Jednak to, co mnie zaskakuje, to...
Mam aplikację korzystającą z zarządzanych bibliotek DLL. Jedna z tych bibliotek dll zwraca ogólny słownik: Dictionary<string, int> MyDictionary; Słownik zawiera klawisze z dużymi i małymi literami. Z drugiej strony otrzymuję listę potencjalnych kluczy (ciągów), ale nie mogę...
Załóżmy na przykład, że masz dwie klasy: public class TestA {} public class TestB extends TestA{} Mam metodę, która zwraca a List<TestA>i chciałbym rzutować wszystkie obiekty z tej listy na, TestBaby skończyć z
Przeczytałem o usuwaniu typu Java na stronie Oracle . Kiedy następuje usunięcie typu? W czasie kompilacji czy w czasie wykonywania? Kiedy klasa jest załadowana? Kiedy instancja klasy jest tworzona? Wiele stron (w tym oficjalny samouczek wspomniany powyżej) twierdzi, że kasowanie typu występuje...
Chcę utworzyć instancję typu określonego przeze mnie w ogólnej metodzie. Ten typ ma wiele przeciążonych konstruktorów. Chciałbym móc przekazywać argumenty konstruktorom, ale Activator.CreateInstance<T>() nie widzi tego jako opcji. Czy jest na to inny
Dlaczego produkty generyczne w Javie działają z klasami, ale nie z typami pierwotnymi? Na przykład działa to dobrze: List<Integer> foo = new ArrayList<Integer>(); ale nie jest to dozwolone: List<int> bar = new
Mam klasę, której chcę użyć do przechowywania „właściwości” innej klasy. Te właściwości mają po prostu nazwę i wartość. Idealnie, chciałbym móc dodawać właściwości pisane na maszynie , tak aby zwracana „wartość” była zawsze zgodna z typem, jaki chcę. Ten typ powinien zawsze być prymitywny. Ta...
Jeśli BaseFruitma konstruktora, który akceptuje int weight, czy mogę utworzyć egzemplarz owocu za pomocą ogólnej metody takiej jak ta? public void AddFruit<T>()where T: BaseFruit{ BaseFruit fruit = new T(weight); /*new Apple(150);*/ fruit.Enlist(fruitManager); } Przykład został dodany za...
Mam pętlę foreach, która czyta listę obiektów jednego typu i tworzy listę obiektów innego typu. Powiedziano mi, że wyrażenie lambda może osiągnąć ten sam wynik. var origList = List<OrigType>(); // assume populated var targetList = List<TargetType>(); foreach(OrigType a in origList)...