私は次の列挙型を持っています:
enum FilterFactory {
INSTANCE;
private final Map<FilterType, Creator> creators;
private FilterFactory() {
creators = new HashMap<>();
class SimplCreator implements FilterCreator{
@Override
public FilterDTO createDto() {
return new FilterDTO();
}
} //Local class within the constructor
creators.put(FilterType.DATE, new FilterCreator(){
@Override
public FilterDTO createDto() {
return new DynamicDTO();
}
});
creators.put(FilterType.DROP_DOWN_LIST, new SimplCreator());
creators.put(FilterType.FIELD, new SimplCreator());
}
private static interface Creator{
public FilterDTO createDto();
}
//Other staff
}
問題は、コンストラクタ本体内でローカル クラスを使用したことがないことです。いくつかのバグを引き起こす可能性がありますか? そうするのは悪いことですか? また、コンストラクタ enu のコンストラクタ。