点运算符内的字符串

时间:2012-05-11 20:20:34

标签: java dot-operator

我很确定这是不可能的(考虑到它是如此糟糕的编程习惯),但无论如何我都会问。

在Java中,有没有办法使用点运算符来使用字符串代替方法名称(或其他东西)?

例如:java.stringname.NumericShaper();其中stringname =“awt.font”

我正在尝试将一些重复的代码放入迭代循环中。例如,我的一个变量是“Settings.can1.baud”,我想在每次循环时迭代“can1”部分。也许有更好的方法来做到这一点?

我是Java编程的新手,所以我不确定这有什么意义......

2 个答案:

答案 0 :(得分:2)

如果您的意思是您有一群名为can1can2can3等的成员,那么您应该使用array或{{3}而不是。

可以使用collection执行您想要的操作。但在这种情况下,它是繁琐的,不好的做法(经常),而且是不必要的。

答案 1 :(得分:2)

你可以使用反射来做到这一点:

try {   

        //loop over stringnames?
        String stringname = "awt.font";
        Class<?> numericShaperClass = Class.forName("java." + stringname + ".NumericShaper");


        NumericShaper numericShaper = (NumericShaper) numericShaperClass.newInstance();

    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } catch (InstantiationException e) {
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    }
}

至于问题的第二部分,您可以使用Class.getField()方法访问Properties类的成员变量。

在这种情况下使用反射可能会过度,并且可能导致一些非常难以理解的代码,并且代码可能很慢。