扩展一个成员都是静态的类

时间:2015-04-14 00:04:55

标签: java static extend

扩展一个方法都是静态的Java类是否有意义?

public class Parent{
  public static String child1(long numb){...};
  public static MyData child2(String str){...};
  ...
}

public class More extends Parent{...}

2 个答案:

答案 0 :(得分:0)

我认为下面提到的很少:

  1. 如果你班级中的所有方法都是静态的,你可以让这个班级变成单身,这将节省大量空间。
  2. 您可以非常有效地使用template method design pattern,其中一些继承类可以定义其特定的内容
  3. 对于没有实例变量的类,不需要同步。所以你的类可以被N个线程访问,而不必担心处理并发。

答案 1 :(得分:0)

仅具有静态成员函数的类通常是实用程序类,即它们为在其他相关对象上操作的函数提供分组。例如,Files类提供了处理File对象的功能,而apache公共ArrayUtils提供了使用T[]的工具。

我在扩展实用程序类时遇到的唯一明智的情况是减少与第三方实用程序类的耦合。 (在我看来,这是一个相对较弱的原因)。

假设您使用了一些第三方Foo实用程序

public class YourFooUtilities {
  public static void makeAFooSing(Foo f) {...}
}

但是你还需要一些内部Foo实用程序,然后你可以这样做:

public class MyFooUtilities extends YourFooUtilities {
    public static void makeAFooDance(Foo f) { ... }
    public static void makeAFooDanceAndSing(Foo f) { 
       makeAFooDance(f);
       makeAFooSing(f);
    }
}

然后您对YourFooUtilities的使用始终可以通过MyFooUtilites,提供一个抽象层

static import MyFooUtilities.*;

public static class MainClass {    
  void doSomething() {
     Foo f = new Foo();
     makeFooDance(f);
     makeFooSing(f);
     makeAFooDanceAndSing(f);
  }
}

这会使您的代码(稍微)与第三方代码绑定得不那么紧密。