我正在開發一個項目,其中我應該使synchronous
和asynchronous
我的客戶端程序的行爲。所以我創建了一個接口(IClient),它有兩種方法,一種是getUserSync
,用於同步行爲,另一種是用於異步行爲的getUserAsync
。如何檢查異步方法中的無效輸入大小寫?
下面是實現我的接口(IClient)我的客戶端程序 -
public class RedClient implements IClient {
ExecutorService executor = Executors.newFixedThreadPool(5);
@Override
public RedResponse getUserSync(RedKey rdKeys) {
// How to handle this case in getUserAsync method?
if (RedUtils.isEmpty(rdKeys)) {
return new RedResponse(null, RedClientError.INVALID_INPUT, RDClientStatus.ERROR);
}
RedResponse response = null;
Future<RedResponse> handle = getHandle(rdKeys);
try {
response = handle.get(rdKeys.getTimeout(), TimeUnit.MILLISECONDS);
} catch (TimeoutException e) {
response = new RedResponse(null, RedClientError.TIMEOUT, RDClientStatus.ERROR);
} catch (Exception e) {
response = new RedResponse(null, RedClientError.ERROR, RDClientStatus.ERROR);
}
return response;
}
@Override
public Future<RedResponse> getUserAsync(RedKey rdKeys) {
// How to handle empty input keys case here just as I have handle it
// in getUserSync method
return getHandle(rdKeys);
}
private Future<RedResponse> getHandle(RedKey beInput) {
RedClientTask redClientTask = null;
Future<RedResponse> future = null;
try {
RedClientTask = new RedClientTask(beInput);
future = executor.submit(redClientTask);
} catch (InterruptedException e) {
}
}
return future;
}
}
現在,客戶可以調用getUserSync
或getUserAsync
方法取決於有要求。因此,在getUserSync
方法調用的情況下,如果它們被傳遞空的輸入鍵,然後我提出過回一個響應的無效輸入並且返回回..
現在該怎麼做同樣的事情在getUserAsync
方法,因爲這方法只返回Future,所以我不確定這是如何解決的?
您已經創建了界面。你不能修改它是通用的嗎?好的,但是你也可以在輸入空的情況下修改'toString()'方法 - 返回INVALID INPUT ... –
hmmm ..不知道該怎麼做。你能提供一個例子,因爲我是新手,所以不知道如何處理這個scnenario? – AKIWEB