这是我的班级:
class StockQuote {
Float[] high, low, close, open;
public float GetMax(String choose_data_type) {
if data_type="high" {
Routine_Searchmax(high)
} elseif strdata_type="low" {
Routine_Searchmax(low)
}
}
private float Routine_Searchmax(float[] variable) {
// here i search max value into my array
}
}
我的问题是:可以使用变量数组的名称传递字符串变量,然后..处理该特定变量? 有没有办法做到这一点 ? 感谢
答案 0 :(得分:2)
实现一个单独的私有方法,该方法将变量的名称作为参数并返回相应的float数组。然后,您可以在实现计算的所有方法中使用此辅助方法。
如果你要识别变量的参数是一个字符串,那么将它“转换”到float数组的最简单方法就是一种if-cascade。
if(name.equals("high") return this.high;
if(name.equals("low")...
throw new IllegalArgumentExeption();
如果你有很多这个变量(高,低......),那么你可以使用反射代替这个if-cascade。
重要的是使用ENUM而不是字符串!
但是我的意见是一个更好的解决方案是使用面向对象!创建一个只为其自己的valus实现getMax的类的高,低......实例。所以你可以这样做:
MyClass high = new MyClass;
...
float higgMax = high.getMax();
答案 1 :(得分:1)
更好的方法是使用枚举
枚举声明
public enum Float
{
HIGHT("high"), LOW("low"), CLOSE("close"), OPEN("open");
String code;
Float(String code)
{
this.code=code;
}
// add getter and setter for string code here
}
第12课
public class StockQuote {
public Float getMax(String chooseDataType) {
return routineSearchmax (Float.valueOf(chooseDataType));
}
//This float is now enum
private Float routineSearchmax(Float variable) {
// here i search max value into my array
}
}
但是就像这些家伙说的那样你也可以做到这一点,但在我看来这种方式更整洁也注意到没有声明。