加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java 8:更好地扩展静态方法类或更好地直接调用静态方法?

发布时间:2020-12-15 04:32:59 所属栏目:Java 来源:网络整理
导读:我正在将一些旧的 Java 4代码更新为 Java 8(这里粘贴太多了)并且原始程序员选择了几乎每个类的他们都扩展了这个单独的HUGE类,只有静态方法和常量,但我不知道他们的推理. 例如: public class BaseClass{ /* this class has a huge amount of ONLY static met
我正在将一些旧的 Java 4代码更新为 Java 8(这里粘贴太多了)并且原始程序员选择了几乎每个类的他们都扩展了这个单独的HUGE类,只有静态方法和常量,但我不知道他们的推理.

例如:

public class BaseClass{
     /* this class has a huge amount of ONLY static methods/constants */

     public static final int STUFF_DONE = 1;

     public static String getStuff(){
           String stuff = "this is my stuff.";
           return stuff;
     }
     ...
}

public class SuperClass extends BaseClass{
     /* this class has only a few methods */
     public String labelStuff(){
          return getStuff();
     }
}

public class MyClass extends SuperClass{
     /* there are many classes that extend SuperClass like this one */
     public int handleStuff(){
          String myString = labelStuff();
          return STUFF_DONE;
     }
     public static void main(){
          if(handleStuff()) System.out.println("Done.");
     }
}

我的问题是……保持这种设计是否更好,或者更好地删除静态方法/常量的继承并简单地静态调用这些方法/常量?

对我来说“更好”被定义为较低的内存消耗(同样,这个基类非常庞大),因为CPU很可能不受此影响.这种方法有哪些好处/陷阱?

我担心的是,因为BaseClass是如此巨大,以至于我在继承类中只使用一两个方法/常量浪费了大量内存,我可以静态调用它.

解决方法

静态成员本身不是“继承”的.无论从哪个子类调用它们,它们都存在于基类中,所以我怀疑是否存在任何内存影响.

将所有类创建为此公共类的子类的原因只是为了便于访问没有限定类名的静态成员.一种常见的变体是从声明一堆静态字段的接口继承.好处是实现接口不会像超类一样干扰继承(你只能扩展一个超类).缺点是,在Java 8之前,无法在接口上声明静态方法.

在任何情况下,这个技巧通常被认为是反模式,并已被static imports取代.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读