【发布时间】:2018-07-22 13:57:23
【问题描述】:
假设我有一个类是其他类的父类,并且包含指示处理过程中出现问题的布尔标志。例如:
class BaseClass
{
private bool error;
....
}
该类的子级用于处理。
它由实现服务接口的类使用:
public interface MyService
{
public ClassA execute1();
public ClassB execute2();
public List<ClassC> execute3();
}
ClassA、ClassB 和 ClassC 扩展自 BaseClass。
实现上述接口的类的实例用于其他类是 Spring @Service,有一个服务列表:
List<MyService> services;
在服务类中,还有一个方法可以在几个同时运行的线程中调用 MyService 实现的实例。签名是
public <T> List<T> callServices(Function<MyService, T> callback)
我的问题是 - 在 callServices 方法内部如何返回 ClassA、ClassB 或 List 的空对象并设置错误标志?
我想过这样的事情:
public <T extends BaseClass> List<T> callServices(Function<MyService, T> callback)
但这不适合List<ClassC>。
我们不知道确切的类型并且有擦除。问题在于List<ClassC>。我的想法是将一个额外的参数传递给带有错误标志的方法,但我想知道是否有其他更通用的方法来做到这一点。
【问题讨论】:
-
您可以使用
where约束,但您尝试的非常奇怪。你的目标到底是什么? -
为什么
error是私有的?如果它是internal或public,它可以被设置。如果服务需要知道是否存在错误,那么该信息应该是公开的。