当前位置: 首页 > 网络应用技术

JEP的最新更新:使用记录类扩展Java中的模式匹配

时间:2023-03-05 22:48:09 网络应用技术

  在(预览)中,它已被提高为保护,因此提出了当前的建议来解构该类,该类可以与模式结合使用,该类别可以实现稳定,声明性和组合的数据导航和处理模式。

  在提供的模式匹配中,将扩展操作员,以便它可以使用该模式并执行匹配。具体示例如下:

  公共void print(object o){

  if(o实例double){

  double d =(double)o;

  system.out.println(“ d =” + d);

  }

  }

  使用匹配可以如下更改:

  公共void print(object o){

  if(o实例double d){

  system.out.println(“ d =” + d);

  }

  }

  在上面的示例中,如果o是double的实例,则o成功匹配DoubleD。此d d d d d d d odut o d d d d d d d double。减少了显示类型的转换并有效缩短代码。

  因此,开发人员可以轻松编写不满意的对象。

  记录点(int x,int y){}

  使用类后,无需显示施工功能,访问方法和其他方法(例如Harmony)。

  如果代码中使用了示例,则开发人员需要访问其访问者方法以获取数据,例如:

  公共空白印刷品(对象o){

  if(o实例p){

  int x = p.x();

  int y = p.y();

  system.out.println(x + y);

  }

  }

  在上面的代码中,模块变量p用于调用访问方法x()和y()以获取x和y的值。使用记录后,P变量将不再需要。Publicvoid printsum(object o){

  如果instanceof point(int x int y){{{

  system.out.println(x + y);

  }

  }

  开发人员解构了更复杂的图形对象,例如以下情况:

  枚举颜色{红色,绿色,蓝色}

  记录colordpoint(点P,颜色颜色){}

  记录点(int x,int y){}

  记录广场(彩色点上尺,彩色点较低){}

  如果开发人员需要获得左上角,则可以使用以下方式使用解构:

  public void printupperleftcoloroROROIRDPOINT(Square S){

  if(s instance of Square(coloredpoint(point(var x,var y),var颜色),var lowlric)){

  }

  }

  如果未使用上述情况,则代码将非常复杂且冗长。