Привести ноль к типу - PullRequest
0 голосов
/ 07 марта 2019

скажем, у нас есть метод:

  @Override
  public void run(Object v, NeoWaterfallI.AsyncCallback<V, E> cb) {
    this.handle(v, (err, results) -> {
      cb.done((E)err, (Map.Entry)results);
    });
  }

если результаты равны нулю, я предполагаю, что приведение к Map.Entry завершится неудачно.Так это лучший способ справиться с этим, как это?

  @Override
  public void run(Object v, NeoWaterfallI.AsyncCallback<V, E> cb) {
    this.handle(v, (err, results) -> {
      if(results != null){
        results = (Map.Entry)results;
      }
      cb.done((E)err, results);
    });
  }

или есть лучший способ?Когда я пытаюсь использовать нулевую проверку, Java не нравится, я вижу это:

enter image description here

1 Ответ

2 голосов
/ 07 марта 2019

Это не имеет смысла:

  if(results != null){
    results = (Map.Entry)results;
  }

Единственное, что достигается, это то, что он выдаст исключение, если results не является классом, который наследуется от Map.Entry.

Я не знаю, какие типы V, E, err и results, но это, вероятно, ближе к тому, что вы хотите:

public void run(Object v, NeoWaterfallI.AsyncCallback<V, E> cb) {
    this.handle(v, (err, results) -> {
     cb.done((E)err, (Map.Entry<String,V>)results);
    });
  }

Пусть обратный вызов определяется cb имеет дело с возможностью того, что второй параметр может быть нулевым.

Если вам нужно проверить ненулевое Map.Entry, вы можете сделать это следующим образом:

boolean isValidAndNotNull = (results instanceof Map.Entry);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...