Java 如何检查异步方法中的无效输入大小写?

Java 如何检查异步方法中的无效输入大小写?,java,asynchronous,future,Java,Asynchronous,Future,我正在从事一个项目,在这个项目中,我应该对我的客户程序进行同步和异步行为。所以我创建了一个接口(IClient),它有两个方法,一个是用于同步行为的getUserSync,另一个是用于异步行为的getUserAsync 下面是实现我的接口(IClient)的客户端程序- 公共类RedClient实现IClient{ ExecutorService executor=Executors.newFixedThreadPool(5); @凌驾 公共RedResponse getUserSync(Red

我正在从事一个项目,在这个项目中,我应该对我的客户程序进行
同步
异步
行为。所以我创建了一个接口(IClient),它有两个方法,一个是用于同步行为的
getUserSync
,另一个是用于异步行为的
getUserAsync

下面是实现我的接口(IClient)的客户端程序-

公共类RedClient实现IClient{
ExecutorService executor=Executors.newFixedThreadPool(5);
@凌驾
公共RedResponse getUserSync(RedKey-rdKeys){
//如何在getUserAsync方法中处理这种情况?
if(RedUtils.isEmpty(rdKeys)){
返回新的RedResponse(null,RedClientError.INVALID_输入,RDClientStatus.ERROR);
}
RedResponse=null;
Future handle=getHandle(rdKeys);
试一试{
response=handle.get(rdKeys.getTimeout(),TimeUnit.ms);
}捕获(超时异常e){
response=新的RedResponse(null,RedClientError.TIMEOUT,RDClientStatus.ERROR);
}捕获(例外e){
response=新的RedResponse(null,RedClientError.ERROR,RDClientStatus.ERROR);
}
返回响应;
}
@凌驾
公共未来getUserAsync(RedKey-rdKeys){
//如何处理空输入键的情况,就像我处理它一样
//在getUserSync方法中
返回getHandle(rdKeys);
}
私有未来getHandle(红键输入){
RedClientTask RedClientTask=null;
Future=null;
试一试{
RedClientTask=新的RedClientTask(beInput);
future=executor.submit(redClientTask);
}捕捉(中断异常e){
}
}
回归未来;
}
}
现在,客户可以根据需要调用
getUserSync
getUserAsync
方法。因此,在
getUserSync
方法调用的情况下,如果它们传递的是空的输入键,那么我将对传递的无效输入做出响应,并将其返回


现在,如何在
getUserAsync
方法中执行相同的操作,因为该方法只返回Future,所以我不确定这将如何实现?

在这两种情况下都抛出
IllegalArgumentException
;这就是它的目的

public Future<RedResponse> getUserAsync(RedKey rdKeys)  {
    if (RedUtils.isEmpty(rdKeys)) { 
        throw new IllegalArgumentException("rdKeys can not be empty");
    }
    ...
}
public Future getUserAsync(RedKey-rdKeys){
if(RedUtils.isEmpty(rdKeys)){
抛出新的IllegalArgumentException(“rdKeys不能为空”);
}
...
}

也就是说。。。我不明白问题是什么。您正在返回一个
未来
。。。这是一个包含
RedResponse
的未来。在您的
getUserSync
方法中,您正在使用
RedResponse
来指示无效的输入。

您已经创建了接口。你不能把它改成通用的吗?好的,但是如果输入为空,您也可以修改它的
toString()
方法-以返回无效输入…嗯。。我不知道该怎么做。你能举个例子吗?因为我是新手,所以不知道如何处理这个问题。谢谢布莱恩。对无效输入抛出IllegalArgumentException是一种好的做法,还是我们应该做出错误响应,然后将其发送回?::耸肩::个人偏好。我更喜欢异常,因为它是在调用方法时立即发生的,而不是在处理返回响应时必须考虑的事情(特别是在谈论异步时)
public Future<RedResponse> getUserAsync(RedKey rdKeys)  {
    if (RedUtils.isEmpty(rdKeys)) { 
        throw new IllegalArgumentException("rdKeys can not be empty");
    }
    ...
}