我正在创建一个特定的类,使用
MyClass class1 = new MyClass(ClassA.StaticSet1, ClassA.StaticCoef1);
MyClass class2 = new MyClass(ClassB.StaticSet1, ClassB.StaticCoef1);因此,我希望将所有这些静态值收集到一个类中,并使用以下内容调用它们
MyClass class1 = new MyClass(TopClass.Obj1);
MyClass class2 = new MyClass(TopClass.Obj2);其中Obj1和Obj2是包含上述值对的静态实体。
我能做的最接近的事情就是在TopClass中创建静态类并扩展一个基类,所以我得到了这个丑陋的实现
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);
        }
    }
}然后我会打电话给他们
Myclass class1 = new MyClass((TopClass.Base)(new TopClass.Obj1());
Myclass class2 = new MyClass((TopClass.Base)(new TopClass.Obj2());但这并不是我真正想要的,因为这个类变得很麻烦,特别是我将创建许多这样的条目。如果您有任何见解,我们将非常感谢:)
谢谢,
哈尼族
发布于 2012-03-06 12:21:11
这将是一个使用工厂模式的好地方。可能是这样的:
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});
  }
}然后,如果你真的想让它们成为单例,你总是可以这样做:
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;
  }
}发布于 2012-03-06 12:20:16
我会封装Object1和object2,原因是要确保它们可以使用和访问,至少它们不是空的。如下所示:
public static TopClass(){
    private static Object obj01 = null;
    private static Object obj02 = null;
    public Object getObj01(){
        if(obj01 == null){
            obj01 = new Object();
        }
        return (obj01);
    }
    public Object getObj02(){
        if(obj02 == null){
            obj02 = new Object();
        }
        return (obj02);
    }
}或者在您的示例中,对象位于数组tipe []中。
发布于 2012-03-06 12:31:39
我将创建许多这样的条目。如果您有任何见解,我们将非常感谢:)
这个想法是,对于静态,你不想做太多的它们,这就是静态事物的全部要点。重新思考和/或重新询问更多关于你的目标的上下文,你打算实现的目标并不清楚。
https://stackoverflow.com/questions/9577640
复制相似问题