做网站分几步,建设机械网站制作,wordpress多用户图库,标识设计网站偏爱继承而不是继承 有充分的理由#xff0c;“在继承中偏爱组成”这一口头禅在文献中已多次重复。 但是#xff0c;Java很少或根本没有语言支持来简化对象的组成。 但是#xff0c;有了名为“简洁方法机构”的新的JEP草案#xff0c;情况可能会略有改善。 Brian Goetz负责… 偏爱继承而不是继承 有充分的理由“在继承中偏爱组成”这一口头禅在文献中已多次重复。 但是Java很少或根本没有语言支持来简化对象的组成。 但是有了名为“简洁方法机构”的新的JEP草案情况可能会略有改善。 Brian Goetz负责JEP草案该草案很可能将在项目“ Amber”下处理。 完整的草稿可以在这里找到。 简洁的方法体 JEP在实施时允许使用一种称为“简明方法体CMB”的方法从广义上讲方法主体可以是lambda或方法引用。 这是一个例子 老式 int length(String s) {return s.length();
} 新的CMB int length(String s) - s.length(); // - is single expression form 或者简单地 int length(String s) String::length; // is method reference form 这将减少样板代码同时提高代码的可读性。 组成 考虑现有的Java类 Collections.UnmodifiableList委托一个内部 List类并防止对其进行修改缩短代码并重新排序以提高可读性 static class UnmodifiableListE extends UnmodifiableCollectionEimplements ListE {final List? extends E list;UnmodifiableList(List? extends E list) {super(list);this.list list;}public boolean equals(Object o) {return o this || list.equals(o);}public int hashCode() {return list.hashCode();}public E get(int index) {return list.get(index);}public int indexOf(Object o) {return list.indexOf(o);}public int lastIndexOf(Object o) {return list.lastIndexOf(o);}public E set(int index, E element) {throw new UnsupportedOperationException();} 使用CMB可以这样实现 static class UnmodifiableListE extends UnmodifiableCollectionEimplements ListE {final List? extends E list;UnmodifiableList(List? extends E list) {super(list);this.list list;}public boolean equals(Object o) list::equals;public int hashCode() list::hashCode;public E get(int index) list::get;public int indexOf(Object o) list::indexOf;public int lastIndexOf(Object o) list::lastIndexOf;public E set(int index, E element) {throw new UnsupportedOperationException();} 我认为此功能很有意义。 当委派具有一个或多个参数的方法时此功能特别有用。 翻译自: https://www.javacodegeeks.com/2018/09/composition-in-java-jep-draft.html