2014-12-05 97 views
0

我知道下面的代码作品。如何指定一类特定的泛型类型?

Object get(final String name); 

<T> T get(final String name, final Class<T> type) { 
    return type.cast(get(name)); 
} 

有没有办法做到这一点?

get(name, Supplier<ByteBuffer>.class); // compiler doesn't like this. 

我目前正在铸造这样的原始结果。

(Supplier<ByteBuffer>) get(name); 
(Supplier<ByteBuffer>) get(name, Supplier.class); 

回答

1

如果您的转换都是可靠的,你可以这样做:

@SuppressWarnings("unchecked") 
<T> T getWithCast(final String name) { 
    return (T) get(name); 
}