为什么我收到错误“构造函数未定义”?

时间:2010-12-07 09:30:40

标签: java enums constructor

在以下代码中@ line 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 个答案:

答案 0 :(得分:9)

您已将构造函数参数放在大括号中,而不是括号中。所以这个:

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

应该是

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

(作为旁注,我个人会避免让你的类型名称像那样呐喊。通常枚举是狡猾的,但枚举的名称本身在PascalCase中是正常的。)< / p>

答案 1 :(得分:2)

构造函数调用由“()”定义。 “{}”是数组初始值设定项。因此,您的调用应为DB2T("DB2T url"),