最近在利用JavaFx开发时,由于没有只能输入数字的控件,每次都要对用户输入的string进行转换,但是Java中利用Double.parseDouble()方法转换时如果转化失败就会抛出异常,每次都try,catch很繁琐,而我在业余学习Swift时发现Swift的Optional和 as?的配合就可以极其优雅的解决这个问题,转换成功则获得该值,失败则为nil(Java里的null),而Java8也引入了Optional类,于是自己试着封装了一下,代码如下:
public class StringUtil { public static Optional<Double> toDouble(String s){ try{ return Optional.of(Double.parseDouble(s)); }catch (Exception e){ return Optional.empty(); } } }
这样,例如当需要用户输入一个数字,比如学生的成绩时,只需要这样写:
Student student = new Student(); StringUtil.toDouble(gradeField.getText()).ifPresent(grade->student.setGrade(grade));
个人感觉还是比较简洁的。