我在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
}
答案 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,类型安全,自我记录,不需要讨厌的反思技巧。