为什么UserGroupInformation类的setConfiguration(Configuration conf)方法是静态的?

时间:2016-04-25 16:07:42

标签: java hadoop hdfs

为什么UserGroupInformation类是这样设计的? 为什么 UserGroupInformation 类的setConfiguration(Configuration conf)方法是静态的?

我的理解是,这将限制客户端每个JVM只能连接一个集群。

我们如何从单个JVM同时连接到多个集群?我认为这是Hadoop API目前尚未支持的一个非常基本的场景。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:3)

什么是静态方法?

一般来说,使方法静态化的主要动机是方便。您可以在不创建任何对象的情况下调用静态方法,只需使用它的类名。因此,如果您需要一个方法,您希望通过类名直接调用该方法,请将该方法设为静态。实用类例如java.lang.MathStringUtils是类的好例子,它使用静态方法。

什么是静态方法?

  1. 静态方法不会修改对象的状态。由于对象的状态 作为实例变量维护
  2. 静态方法主要是对参数进行操作,几乎都是静态方法 接受参数,执行一些计算并返回值。
  3. setConfiguration的作用是什么?

    setConfiguration(Configuration conf) -

    设置UGI的静态配置。特别是,设置安全认证机制和组查找服务。

      

    我们如何从单一的同时连接到多个集群   JVM?我认为这是一个非常基本的情况,目前还没有   由Hadoop API支持。

    Ans: Hadoop API在这里使用的是单独的设计模式。你不能这样做,因为如果你可以想象要求使用对象继承或需要为你的方法使用多态,你绝对应该跳过静态并使它成为一个实例方法。

    这里描述了一个很好的场景:Static methods are a code smell

    资源链接:

    1. When to make a method static in Java
    2. Java Singleton Design Pattern Best Practices with Examples

答案 1 :(得分:1)

我不确定为什么他们让这个方法变得静态。但是,如果您想从单个JVM访问多个集群,那么您可以使用多个类加载器来解决从单个JVM设置多个配置的问题。

以下是一些链接: