@Ginden: @mamapoth: Java usuwa typ generyków, dlatego nie da się zainstancjonować typu generycznego new T(), ani pobrać jego typu typeof(T). Problem tkwi głęboko w JVM-ie, chociaż np. Scala sobie z tym radzi.
Generalnie jak nie kodowałeś w silnie typowanych językach to może być ciężko zrozumieć.
@mathix: Wiem, że Java usuwa typ z generyków bo umiem Javę. Nie wiedziałem co robi ta składnia z C#. No, takie działanie bywa irytujące, no ale co zrobisz... Za to w Javie final to final i koniec :-P
@Kuriozal: Pozajęzykowe, gdyż nie są dostarczane przez język Java, lecz przez JVM. Pozajęzykowe, bo pozwalają na to, na co język nie pozwala. Gdyby język na to pozwalał, żadne API nie byłoby potrzebne.
where T : UserControl, new()
{
_viewsDictionary.Add(typeof(T), new T());
}
Javowcy, nawet mi Was nie żal XD
#java #csharp #programowanie
fact 0 = 1
fact n = n * fact (n - 1)
c-sharpowcy, nawet mi was nie żal
#csharp #haskell #losowykawalekkoduwktorymjedenjezykjestladniejszyoddrugiego
from
collections
import
defaultdict
tree =
lambda
: defaultdict(tree)
Tworzenie rekursywnego drzewa słowników
@mamapoth:
Java usuwa typ generyków, dlatego nie da się zainstancjonować typu generycznego new T(), ani pobrać jego typu typeof(T). Problem tkwi głęboko w JVM-ie, chociaż np. Scala sobie z tym radzi.
Generalnie jak nie kodowałeś w silnie typowanych językach to może być ciężko zrozumieć.
new
ować bez argumentów)No, takie działanie bywa irytujące, no ale co zrobisz...
Za to w Javie final to final i koniec :-P
private
void
register(Class
extends
UserControl clazz)
throws
ReflectiveOperationException {
viewsDictionary.put(clazz, clazz.newInstance());
}
( ͡° ͜ʖ ͡°)
http://ideone.com/VCuh6u
Reflection api
Pozajęzykowe, bo pozwalają na to, na co język nie pozwala.
Gdyby język na to pozwalał, żadne API nie byłoby potrzebne.