我有一个java类,它只有静态方法和字段,所以我不希望为此创建任何对象。我可以通过两种方式实现这一点,使类(class)抽象化。使用私有(private)构造函数。这两种方法哪个更好? 最佳答案 你应该使用private构造函数。如果您的类是抽象的,则可以对其进行扩展并创建对象。根据我对问题的理解,您想要的是不可实例化的类。来自Item4ofEffectivejava:Attemptingtoenforcenoninstantiabilitybymakingaclassabstractdoesnotwork.Theclasscanb
我有一个java类,它只有静态方法和字段,所以我不希望为此创建任何对象。我可以通过两种方式实现这一点,使类(class)抽象化。使用私有(private)构造函数。这两种方法哪个更好? 最佳答案 你应该使用private构造函数。如果您的类是抽象的,则可以对其进行扩展并创建对象。根据我对问题的理解,您想要的是不可实例化的类。来自Item4ofEffectivejava:Attemptingtoenforcenoninstantiabilitybymakingaclassabstractdoesnotwork.Theclasscanb
这是我的课:packagecom.tools.app.holiday;publicclassHoliday{privateStringname;privateCalendardateFrom=Calendar.getInstance();privateCalendardateTo=Calendar.getInstance();...我可以通过将以下内容放入我的ProGuard规则文件中来保留这些私有(private)字段:-keepclassmembersclasscom.tools.app.holiday.Holiday{privatejava.lang.Stringname;pri
这是我的课:packagecom.tools.app.holiday;publicclassHoliday{privateStringname;privateCalendardateFrom=Calendar.getInstance();privateCalendardateTo=Calendar.getInstance();...我可以通过将以下内容放入我的ProGuard规则文件中来保留这些私有(private)字段:-keepclassmembersclasscom.tools.app.holiday.Holiday{privatejava.lang.Stringname;pri
publicclassPrivateOverride{privatevoidf(){System.out.println("privatef()");}}publicclassDerivedextendsPrivateOverride{publicvoidf(){//thismethodisneverrun.System.out.println("publicf()");}}publicstaticvoidmain(String[]args){//instantiateDerivedandassignitto//objectpooftypePrivateOverride.Private
publicclassPrivateOverride{privatevoidf(){System.out.println("privatef()");}}publicclassDerivedextendsPrivateOverride{publicvoidf(){//thismethodisneverrun.System.out.println("publicf()");}}publicstaticvoidmain(String[]args){//instantiateDerivedandassignitto//objectpooftypePrivateOverride.Private
在Javatutorial"DefininganInterface",它说Ifyoudonotspecifythattheinterfaceispublic,yourinterfacewillbeaccessibleonlytoclassesdefinedinthesamepackageastheinterface.但是,这个interfacePPInterface{voidfoo();voidbar();}classNewClassimplementsPPInterface{voidfoo(){}voidbar(){}}在NewClass中生成编译器错误,因为我正在尝试分配较弱的访问
在Javatutorial"DefininganInterface",它说Ifyoudonotspecifythattheinterfaceispublic,yourinterfacewillbeaccessibleonlytoclassesdefinedinthesamepackageastheinterface.但是,这个interfacePPInterface{voidfoo();voidbar();}classNewClassimplementsPPInterface{voidfoo(){}voidbar(){}}在NewClass中生成编译器错误,因为我正在尝试分配较弱的访问
如果不是:privateJButtontheButton;我这样定义一个字段:JButtontheButton;有什么区别? 最佳答案 包。它们对同一包中的其他类可见。FWIW,我通常在这些上使用我自己的无操作@Package注释,只是为了清楚地表明我知道我在做什么——我不只是忘记了一些东西。尽管它是默认设置,但包访问在高质量代码中的使用可能比其他三种可能性中的任何一种都少——有一个很大的异常(exception):在某些风格的单元测试中,希望能够访问通常是私有(private)的方法或字段。提供访问的一种方法是将它们设置为包访问,
如果不是:privateJButtontheButton;我这样定义一个字段:JButtontheButton;有什么区别? 最佳答案 包。它们对同一包中的其他类可见。FWIW,我通常在这些上使用我自己的无操作@Package注释,只是为了清楚地表明我知道我在做什么——我不只是忘记了一些东西。尽管它是默认设置,但包访问在高质量代码中的使用可能比其他三种可能性中的任何一种都少——有一个很大的异常(exception):在某些风格的单元测试中,希望能够访问通常是私有(private)的方法或字段。提供访问的一种方法是将它们设置为包访问,