首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有成对的静态数组值的Java类

具有成对的静态数组值的Java类
EN

Stack Overflow用户
提问于 2012-03-06 11:49:09
回答 4查看 446关注 0票数 1

我正在创建一个特定的类,使用

代码语言:javascript
运行
复制
MyClass class1 = new MyClass(ClassA.StaticSet1, ClassA.StaticCoef1);
MyClass class2 = new MyClass(ClassB.StaticSet1, ClassB.StaticCoef1);

因此,我希望将所有这些静态值收集到一个类中,并使用以下内容调用它们

代码语言:javascript
运行
复制
MyClass class1 = new MyClass(TopClass.Obj1);
MyClass class2 = new MyClass(TopClass.Obj2);

其中Obj1和Obj2是包含上述值对的静态实体。

我能做的最接近的事情就是在TopClass中创建静态类并扩展一个基类,所以我得到了这个丑陋的实现

代码语言:javascript
运行
复制
Public class TopClass{
    public static class Base{
        public String set[];
        public double coef[];
        public Base(s, c){
            set = s;
            coef = c;
        }

    }
    public static class Obj1 extends Base{
        public static String set[] = {"a","b","C"};
        public static double coef[]= {1,2,3};
        public Obj1(){
            super(set, coef);
        }

    }
    public static class Obj2 extends Base{
        public static String set[] = {"x","y","z"};
        public static double coef[]= {11,12,13};
        public Obj2(){
            super(set, coef);
        }


    }

}

然后我会打电话给他们

代码语言:javascript
运行
复制
Myclass class1 = new MyClass((TopClass.Base)(new TopClass.Obj1());
Myclass class2 = new MyClass((TopClass.Base)(new TopClass.Obj2());

但这并不是我真正想要的,因为这个类变得很麻烦,特别是我将创建许多这样的条目。如果您有任何见解,我们将非常感谢:)

谢谢,

哈尼族

EN

Stack Overflow用户

回答已采纳

发布于 2012-03-06 12:21:11

这将是一个使用工厂模式的好地方。可能是这样的:

代码语言:javascript
运行
复制
public class SetCoefProvider {
  private String[] set;
  private double[] coef;

  public SetCoefProvider(String[] set, double[] coef) {
    this.set  = set;
    this.coef = coef;
  }

  public String[] getSet() {
    return set;
  }
  public double[] getCoef() {
    return coef;
  }
}

public class SetCoefProviderFactory {
  public static SetCoefProvider createObj1Provider() {
    return new SetCoefProvider(new String[] {"a", "b", "c"}, new double[] {1,2,3});
  }
  public static SetCoefProvider createObj2Provider() {
    return new SetCoefProvider(new String[] {"x", "y", "z"}, new double[] {11,12,13});
  }
}

然后,如果你真的想让它们成为单例,你总是可以这样做:

代码语言:javascript
运行
复制
public class SingletonSetCoefProviders {
  private static SetCoefProvider obj1Provider, obj2Provider;

  static {
    obj1Provider = SetCoefProviderFactory.createObj1Provider();
    obj2Provider = SetCoefProviderFactory.createObj2Provider();
  }

  public static SetCoefProvider getObj1Provider() {
    return obj1Provider;
  }
  public static SetCoefProvider getObj2Provider() {
    return obj2Provider;
  }
}
票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9577640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档