Re: how to instantiate new return object of generic type
On Apr 16, 11:29 pm, tom forsmo <nos...@nosmap.net> wrote:
Robert Klemme wrote:
On 16.04.2007 14:49, tom forsmo wrote:
You can either use reflection or you define a generic interface for a
factory object that will create a new object from the given instance.
Something along the lines of
interface Factory<V> {
V create(V template);
}
Ok, so how do I do actually create the new object and how do I find out
what type of object I am to create?
creation example:
V val = new String(message);
is not legal, nor is casting it to V since V is unknown.
tom
You have to create a explicit Factory for the types you want to
create.
interface Factory<V> {
V create(V template);
}
class Table<K, V> {
private final Factory<V> factory;
public Table(Factory<V> factory) {
this.factory = factory;
}
public V get(K key, Locale locale) {
return factory.create(find(key));
}
}
new Table<String, Number>(
new Factory<Number>() {
Number create(Number template) {
return template == null ? Integer.valueOf(0) :
Integer.valueOf(template.intValue());
}
}
).get("something");