2011-12-29 4 views
4

Скажем, у меня есть следующий обобщенный класс:По умолчанию Generic Тип

public class Foo<T extends Bar> { 
    // stuff 
} 

Можно ли указать тип по умолчанию (Baz, например), который будет выступать в качестве T, если не T не были переданы в?

+0

Нет, но то, что проблема, которую вы пытаетесь решить? –

ответ

3

№ См. "Type Variables" в Спецификации языка Java.

Тем не менее, вы можете предоставить подклассы, которые выполнить аналогичные цели:

public class Foo<T extends Bar> { ... } 

public class FooDefault extends Foo<Baz> { ... } 
+0

Возможно ли это с помощью обработчика аннотаций? – milan

+0

У вас есть это в виду? –

+2

Нет, никогда не использовал их раньше, просто интересно. Но, скорее всего, это будет просто фантастическая, сложная версия фабричного метода. – milan

2

Использовать фабричный метод, как

public <T extends Bar> static Foo<T> getInstance(Class<T> clz) { 
    if (clz == null) 
     return new Foo<Bar>; 
    else 
     return clz.newInstance(); 
} 
+0

Я думаю, вы имели в виду последнюю строку, чтобы создать Foo. –

+0

yup, действительно, извините за это :) В любом случае идея должна быть ясной – jdevelop

+1

Вы можете исправить свой ответ по ссылке «Изменить» в левом нижнем углу. –

Смежные вопросы