我有一个包含要进行计算的枚举的类。每个枚举都使用外部类的一些或全部非静态变量。但是,由于它们无法访问实例变量,因此我必须将它们作为参数传递。
public class Outer{
ClassA a;
ClassB b;
ClassC c;
Map<MyEnum,Double> results= new EnumMap(MyEnum.class);
private enum MyEnum{
X{ public double calc(ClassA _a){ dostuff } },
Y{ public double calc(ClassB _b,ClassC _c){ dostuff } },
Z{ public double calc(ClassA _a,ClassB _b){ dostuff } };
}
public void doCalc(){
for(MyEnum item:MyEnum.values()){
result.get(item) = item.calc(...);//Not uniform here
}
}
}
我的问题是我无法以统一的方式在for循环中传递参数。我可以使每个Enum方法采用所有类
public double calc(ClassA _a,ClassB _b,ClassC _c){ dostuff}
但是,如果我有更多的类,则该参数看起来太难看了。有没有更好的方法来做这种事情?
为什么不将external的实例传递给calc()方法。在这种情况下,每个特定的枚举将具有相应地处理Outer对象的逻辑,新的枚举不需要任何更改。
class Outer {
ClassA a;
ClassB b;
ClassC c;
Map<MyEnum,Double> results= new EnumMap<MyEnum, Double>(MyEnum.class);
private enum MyEnum{
X{ public void calc(Outer o){ } },
Y{ public void calc(Outer o){ } },
Z{ public void calc(Outer o){ } };
abstract void calc(Outer o);
}
public void doCalc(){
for(MyEnum item:MyEnum.values()){
item.calc(this);
}
}
}
class ClassA {}
class ClassB {}
class ClassC {}
问题内容: 我有一个方法可以说: 正如您所注意到的,我有一个名为align的参数。在此方法内部,我将对值是“左”还是“右”有一些if条件。.将参数设置为String,显然我可以传递任何字符串值..我想知道是否有可能将Enum值用作方法参数,如果是,如何? 以防万一有人想到这个;我考虑过使用布尔值,但我并不喜欢它。首先,如何将true / false与left / right关联?(好的,我可以使用
本文向大家介绍java 中枚举类enum的values()方法的详解,包括了java 中枚举类enum的values()方法的详解的使用技巧和注意事项,需要的朋友参考一下 java 中枚举类enum的values()方法的详解 前言: 关于枚举,相信使用的已经很普遍了,现在主要写的是枚举中的一个特殊方法,values(), 为什么说特殊呢,因为在Enum 的 API 文档中也找不到这个方法。接下
问题内容: 我正在尝试在一个抽象类中创建一个抽象方法,该抽象类将自己的Enum作为参数。但是我也希望枚举是通用的。 所以我这样宣布: 在实现中,我列举了一个枚举: 并且方法声明变为: 但是,如果我这样做: 我无法访问并显示错误消息: 我做了这样的解决方法: 但是我想知道是否有可能无法通过我的解决方法? 问题答案: 在您的方法实现中,不是枚举,而是类型参数(通常称为)。因此,它掩盖了与已经说过的ax
问题内容: 在Java 7中,可以选择添加注释来抑制在编译带有不可修改的varargs参数的方法时收到的警告。Project Coin的提案规定,当该方法确保仅将与varargs参数相同类型的元素存储在varargs数组中时,应使用注释。 非安全方法的一个例子是什么? 问题答案: 例如,不安全,可能会将非T存储在数组中,从而在[2]处引起问题 通过使用@SafeVarargs标记该方法,您可以向编
本文向大家介绍遍历Java中的Enum值,包括了遍历Java中的Enum值的使用技巧和注意事项,需要的朋友参考一下 Enum类是所有Java语言枚举类型的通用基类。 示例 我们来看一个使用for循环迭代枚举值的示例- 输出结果 示例 现在让我们来看另一个示例,该示例遍历对每个使用的枚举值- 输出结果
问题内容: 我正在寻找类似于Objective-C的class方法的行为,因为该方法在类初始化时被调用一次,此后不再被调用。 一个简单的闭合将非常时尚!而且很显然,当我们在结构闭包中使用“ s”而不是“ s”时,这一切都将非常匹配! 问题答案: 如果您有一个Objective-C类,最简单的方法就是重写。但是,请确保您的类的 子 类也被覆盖,否则您的类的 子 类可能会被多次调用!如果需要,可以使用