在param中传递一个类常量

时间:2013-04-18 07:48:53

标签: java string constants param

我在java中遇到的问题很少。我想我还不是真的醒了。

我有两个班级:

第一个使用jar中的常量(例如:Highgui.CV_LOAD_IMAGE_COLOR)。在第二个用户中,用户在列表中选择他想要使用的常量。

所以,第二个类调用第一个方法,在字符串中使用“stringify”常量。

但第一个不能使用param中的字符串有一个真正的类常量。

我知道,这是一个非常愚蠢的问题,我很确定我错过了一些明显的东西。

有人有想法解决这个问题吗?

编辑:

一段代码更清晰:

在Class2中

Class1.finder("c:aaa.jpg","Highgui.CV_LOAD_IMAGE_COLOR");

在Class1中

public void finder(String path1, String constant){
    Mat object = Highgui.imread(path1, Highgui.CV_LOAD_IMAGE_COLOR);
    //I want to use "constant" instead of Highgui.CV_LOAD_IMAGE_COLOR
}

1 个答案:

答案 0 :(得分:1)

这看起来像是一个设计问题。传递包含Java常量名称的字符串并不是一个好主意。为什么不简单地创建一个包含颜色值及其描述的类或枚举:

public enum DescribedColor {
    CV_LOAD_IMAGE_COLOR("CV load image color", "red"),
    ...

    private String description;
    private String color;

    private DescribedColor(String description, String color) {
        this.description = description;
        this.color = color;
    }
}

然后在Class1中:

public void finder(String path1, DescribedColor describedColor) {
    ...
}

在Class2中:

Class1.finder("c:aaa.jpg", DescribedColor.CV_LOAD_IMAGE_COLOR);

在显示给用户的列表中,您只需要存储所有DescribedColor实例,并将其描述用作显示给用户的值。

这样,你就是OO,类型安全,自我记录,不需要讨厌的反思技巧。