有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将null强制转换为类型

假设我们有一个方法:

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

如果结果为空,我假设转换为映射。输入将失败。那么,最好的处理方式是这样的吗

  @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) 个答案

  1. # 1 楼答案

    这毫无意义:

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

    唯一可以实现的是,如果results不是从Map.Entry继承的类,它将抛出一个异常

    我不知道VEerrresults是什么类型,但这可能更接近您想要的:

    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指定的回调处理第二个参数可以为null的可能性

    如果需要测试非空Map.Entry,可以这样做:

    boolean isValidAndNotNull = (results instanceof Map.Entry);