初识网站开发流程图,wordpress使用iconfont,网站建设越来越难做,村官 举措 村级网站建设jdk8 参数为方法有时在Java中命名方法参数确实很不错#xff0c;这看起来可能已经很长时间了#xff0c;但是始终还有其他一些解决方法#xff0c;例如使用构建器模式来获得类似的行为#xff0c;这将为一点点。 在我看来#xff0c;使用JDK 8中的Lambda支持可以使您获得非… jdk8 参数为方法 有时在Java中命名方法参数确实很不错这看起来可能已经很长时间了但是始终还有其他一些解决方法例如使用构建器模式来获得类似的行为这将为一点点。 在我看来使用JDK 8中的Lambda支持可以使您获得非常接近的效果而无需其他一些方法所需要的模板。 因此请考虑这个简单的Facade类该类提供了带有可变参数列表的方法。 请注意该方法带有一个Consumer对象这是我们稍后将要使用Lambda调用的方法。 package client;import java.util.function.Consumer;public class Facade {public static void invoke(ConsumerParameter op) {Parameter p new Parameter();op.accept(new Parameter());invoke(p); }public static void invoke(Parameter p) {// Defensive copy and validatep p.clone();p.validate();// ...}public static class Parameter implements Cloneable {public String value1, value2, value3;public Parameter validate() {// ...return this;}public Parameter clone() {// We can use vanilla clone here, for more complicated mutable objects// you might need to perform a deeper copytry {return (Parameter) super.clone();} catch (CloneNotSupportedException e) {throw new RuntimeException(e);}}}} 因此一旦有了这些就可以使用Lambda表示法调用具有您认为合适的参数数量的invoke方法 ...
{public static void main(String[] args) {// Single parameter versionFacade.invoke(p - p.value1x );// Multiple parameter versionFacade.invoke(p - { p.value1x; p.value2y;});}
} 当然您的鹰眼将意识到使用早期的JDK相同的模式当然减去了Consumer方法。 考虑到那里有大量的Java开发人员可能已经有人发明了这种模式。 但您永远不知道如果不写下来就不会发生。 ...
{public static void main(String[] args) {// Using an anonymous inner class pre JDK 8Facade.invoke(new Parameter() {{value1 x;value2 y;}});}
} 参考 在我们的JCG合作伙伴 Gerard Davison的博客博客中JDK 8中几乎命名的方法参数 。 翻译自: https://www.javacodegeeks.com/2013/08/almost-named-method-arguments-in-jdk-8.htmljdk8 参数为方法