可以在没有默认构造函数的情况下创建类吗?

时间:2014-06-07 04:38:51

标签: java constructor

以下课程旨在扩展" Math.random没有对象属性,因此不需要默认构造函数,但是一个存在(默认情况下)。

public class Mathematics {
    public static long random( long lower, long upper ) {
        return (    
            Math.min( lower, upper ) + 
                ((long) (
                    ( 1.0 + 
                        (double) Math.abs( upper - lower )) * 
                            Math.random() ))
        );
    }
}

有没有办法在没有默认构造函数的情况下使用泛型函数?

2 个答案:

答案 0 :(得分:2)

用于覆盖默认构造函数的私有构造函数将禁止实例化。

public class Mathematics {
    private Mathematics() { }

    // Other stuff.
}

这很容易被反射(如你可以改变可访问性),但如果有人使用反射来实例化一类静态方法...

正如评论中所述,如果你是偏执狂,你甚至可以抛出异常:

private Mathematics() thows IllegalAccessError {
    throw IllegalAccessError(Mathematics.class.getName())
}

答案 1 :(得分:1)

给它一个私有的无参数构造函数,它就像没有它一样好。

public class Foo {

   private Foo() {}

}