2013-04-18 34 views
0

在java中我有一個很小的問題。我想我還沒有真正清醒。在param中傳遞類常量

我有兩類:

第一個使用的常數從一個罐(例如:Highgui.CV_LOAD_IMAGE_COLOR)。在第二個中,用戶在他想要使用的常量列表中選擇。

因此,第二個類調用第一個方法,在param中使用「stringify」常量。

但是第一個不能使用param中的字符串有一個真正的類常量。

我知道,這是一個非常愚蠢的問題,我敢肯定我錯過了一些明顯的東西。

有人有一個想法來解決這個問題嗎?

編輯:

的一段代碼更加清晰:

在Class2中

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

在Class

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

'......第二個類調用第一個類的方法,在參數中使用「stringify」常量....'我不確定你的意思。你可以發佈示例方法調用嗎? –

+0

我已經編輯我的帖子:) – SylCh

回答

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; 
    } 
} 

然後到Class:

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

而在Class2中:

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

並且在顯示給用戶的列表中,您只需要存儲所有DescribedColor實例,並將其描述用作顯示給用戶的值。

這樣,你是OO,類型安全,自我記錄,並且不需要討厭的反射技巧。

+0

正是我需要的:) 非常感謝你......併爲這個noob問題抱歉^^' – SylCh