, , , - .
, # 4 ββ. -, Thing "out" :
public interface Thing<out T> {...}
- , # . , T :
public interface Thing<out T>
{
public T GetT();
Thing, ?
Thing<object> thing=createThing();
, .
, , factory :
public static Thing<object> createThing() {...}
, , ?
IList<Thing<object>> list=new List<Thing<object>>();
Thing<object> thing=createThing();
list.Add(thing);
, , Thing T Object, # .
Java, :
public class Thing<T> {...}
public static <T> Thing<T> createThing() {...}
List<?> things=new ArrayList<Thing<?>>();
Thing<?> thing=createThing();
things.add(thing);
, , T , :
public static <T extends MyBaseType> Thing<T> createThing() {...}
List<? extends MyBaseType> things=new ArrayList<Thing<? extends MyBaseType>>();
Thing<? extends MyBaseType> thing=createThing();
things.add(thing);
, T , .
, , # #. ( , .)
? , , , .
(, getValue(), T getValue()? Ack, --- .)