Почему я получаю ошибку "Конструктор не определен"? - PullRequest
0 голосов
/ 07 декабря 2010

В следующем коде @ строки 4 и 5 я получаю ошибку The constructor DataSourceFactory.DATABASE_TYPE() is undefined

public class DataSourceFactory {

    public enum DATABASE_TYPE {     
        DB2T    { "DB2T url"    },  
        DB2Q    { "DB2Q url"    };

        private final String url;     

        DATABASE_TYPE( String _url ){
            this.url = _url;
        }

        public String getUrl() {
            return url;
        }       

    };  

    public static void main(String[] args) {
        for ( DATABASE_TYPE dt : DATABASE_TYPE.values()){
            System.out.println( dt.getUrl() );

        }
    }
}

и если я добавлю конструктор без аргументов, я получу ошибку Syntax error on token ""DB2T url"", delete this token.
В чем здесь проблема?

Ответы [ 2 ]

9 голосов
/ 07 декабря 2010

Вы указали аргументы конструктора в скобках, а не в скобках. Итак, это:

DB2T    { "DB2T url"    },  
DB2Q    { "DB2Q url"    };

должно быть

DB2T("DB2T url"),  
DB2Q("DB2Q url");

(Как примечание, я бы лично не допустил, чтобы ваши имена типов выкрикивались подобным образом. Обычно enum значения кричат, но сами имена перечислений в PascalCase как обычно.)

2 голосов
/ 07 декабря 2010

Вызов конструктора определяется как "()". «{}» является инициализатором массива. Итак, ваш вызов должен быть DB2T("DB2T url"),

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...