2013-02-18 41 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; 
    ... 
}