簡體   English   中英

在參數中傳遞類常量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM