java泛型和集合赋值

Jas*_*n S 2 java generics collections

如果我有这个课程:

class Foo<T> implements SomeInterface
{
    final private List<T> list = new ArrayList<T>();
    final private Class<? extends T> runtimeClass;

    public Foo(Class<? extends T> cl) { this.runtimeClass = cl; }

    // method override from SomeInterface
    @Override public boolean addChild(Object o)   
    {
        // Only add to list if the object is an acceptible type.
        if (this.runtimeClass.isInstance(o))
        {
            list.add( /* ??? how do we cast o to type T??? */ );
        }
    }

    public List<T> getList() 
    { 
        return this.list; 
    } // yes, I know, this isn't safe publishing....
}
Run Code Online (Sandbox Code Playgroud)

我如何从Object执行运行时强制转换到类型T?

Joa*_*uer 6

用这个:

list.add(this.runtimeClass.cast(o))
Run Code Online (Sandbox Code Playgroud)

详情Class.cast()请见