Java中的类类型作为字段
我的问题可能看起来很奇怪,我不知道这是否可能,但事实是: 我有几个类(用例)都实现了一个接口=>Java中的类类型作为字段,java,class,Java,Class,我的问题可能看起来很奇怪,我不知道这是否可能,但事实是: 我有几个类(用例)都实现了一个接口=>IUseCase UseCase1 implementing IUseCase UseCase2 implementing IUseCase etc. 我还有另一个类“UseCaseContext”,它应该携带一些关于几个用例的信息 我的目标是每个UseCase拥有一个UseCaseContext实例。为此,我需要UseCaseContext中的一个字段,该字段告诉我该上下文是否与UseCase1或
IUseCase
UseCase1 implementing IUseCase
UseCase2 implementing IUseCase
etc.
我还有另一个类“UseCaseContext
”,它应该携带一些关于几个用例的信息
我的目标是每个UseCase
拥有一个UseCaseContext
实例。为此,我需要UseCaseContext中的一个字段,该字段告诉我该上下文是否与UseCase1或UseCase2等相关
因此,除了在字段中存储用例实例之外,还有其他方法可以确定myUseCaseContext
与哪个UseCaseContext
相关吗
我知道这可能会让人困惑,所以如果需要我解释,请告诉我:)
谢谢大家!
IUseCase some_instance = new UseCaseX();
String className = some_instance.getClass().getSimpleName()
这将以字符串形式返回UseCaseX。这就是你想要的吗
另外,如果您不需要类的字符串名称,您可以使用class对象(class clazz=some_instance.getClass())来区分一个用例和另一个用例。正如注释中已经指出的,只需在
UseCaseContext
中存储一个类引用即可:
public class UseCaseContext
{
private Class<? extends IUseCase> useCaseClass;
...
}
公共类UseCaseContext
{
私有类尝试以下方法:
public class UseCaseContext {
private Class useCaseClass;
public UseCaseContext(Class useCaseClass) {
this.useCaseClass = useCaseClass;
}
}
然后您可以简单地调用:newUseCaseContext(instance.getClass())
你可以使用类
对象作为一个字段。看起来你想要一个映射
?你在寻找单例模式吗?@cdhowie:不是一个真正的映射,只是一个可以帮助我识别我正在处理的用例的字段!@ogzd:我认为类字段可能就是我正在寻找的,那么我应该存储类似的东西吗其中的e“myusecase.class”?为什么使用名称而不是class
?