[英]Passing a class constant in 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
}
這看起來像一個設計問題。 傳遞包含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實例,並將其描述用作顯示給用戶的值即可。
這樣,您就可以了,是面向對象的,類型安全的,具有自說明性,並且不需要討厭的反射技巧。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.