2013-02-18 62 views
3

我的問題似乎是不可思議的,我不知道是否有可能,但是它是:類類型在Java中

我有幾個類(UseCases)都實現一個接口=>IUseCase

UseCase1 implementing IUseCase 
UseCase2 implementing IUseCase 
etc. 

我也有另一個階級「UseCaseContext」是應該攜帶一些usecases的一些信息。

我的目標是要有一個UseCaseContext的實例每UseCase。爲了做到這一點,我需要一個在告訴我,如果UseCaseContext這種情況下要麼是相關UseCase1或UseCase2或等

因此,而不是在一個領域存儲用例的一個實例,是有另一種方法來確定我的UseCaseContext與哪個UseCase有關?

我知道這可能是混亂的,所以,請告訴我,如果你需要我,否則解釋一下:)

謝謝!

+1

您可以使用'Class'對象作爲字段。 – ogzd 2013-02-18 13:21:04

+0

看來你想要一個'Map '? – cdhowie 2013-02-18 13:21:38

+0

你在尋找單身模式嗎? – duffy356 2013-02-18 13:21:58

回答

2

試試這個:

public class UseCaseContext { 

    private Class useCaseClass; 

    public UseCaseContext(Class useCaseClass) { 
     this.useCaseClass = useCaseClass; 
    } 
} 

然後,您只需撥打:new UseCaseContext(instance.getClass())

3
IUseCase some_instance = new UseCaseX(); 
String className = some_instance.getClass().getSimpleName() 

這將返回UseCaseX作爲字符串。那是你要的嗎?

P.S.如果你不想要類的字符串名稱,你可以使用類對象(class clazz = some_instance.getClass())來區分一個UseCase和另一個UseCase。

+2

爲什麼使用名稱而不是'Class'? – 2013-02-18 13:24:33

+0

沒有理由,這只是一個例子......問題不清楚...... – Leonidos 2013-02-18 13:26:46

5

正如評論所指出的,只是存儲在您的UseCaseContext類引用:

public class UseCaseContext 
{ 
    private Class<? extends IUseCase> useCaseClass; 
    ... 
}