#java
Вопрос:
Я реализовал метод, который возвращает a CompletableFuture<Object>
, и внутри метода я использую a Map<String, Long>
, и это объект, который я возвращаю, и приведение выполняется автоматически.
Затем я хочу использовать результат этого метода для другой функции, и внутри новой функции мне нужно десериализовать объект в Map<String, Long>
. Можно ли сделать обычный слепок или мне следует сделать что-то другое?
@Override
public CompletableFuture<Boolean> process(String name, Object data, Object message) {
switch (name) {
case ("first"):
Map<String, Long> finalAmount = (Map<String, Long>) data;
Правильно ли этот способ сделать актерский состав?
Комментарии:
1. Актерский состав правильный, но почему вы
CompletableFuture<Object>
в первую очередь используете а вместо аCompletableFuture<Map<String, Long>>
?2. потому что эта функция может использовать и другие типы коллекций, а не только Map…so вот почему я сделал это как можно более общим
3. Приведение в порядке, но почему бы вам не сделать метод, создающий CompletableFuture, обобщенным, чтобы он возвращал именно тот тип, который вам нужен?
4. Для конкретного случая, в котором
Object data
передается типMap <String, Long>
, приведение будет работать в вашем примере кода. В этом случае вы также можете пройтиMap <String, Long> data
напрямую, что сделает бросок ненужным. Для общего решения, которое передает другой тип, приведение завершится неудачей. Поэтому вам придется проверить тип перед броском.