Java 有没有更优雅的方法来迭代对象方法和测试所有这些条件
我用Java编写了以下代码,我希望将其最小化或以更简洁的方式编写。如果这是可行的,你能帮我吗Java 有没有更优雅的方法来迭代对象方法和测试所有这些条件,java,syntax,Java,Syntax,我用Java编写了以下代码,我希望将其最小化或以更简洁的方式编写。如果这是可行的,你能帮我吗 return( Objects.equals(obj1.getMeaning(), obj2.getMeaning()) && Objects.equals(obj1.getModifies(), obj2.getModifies()) && Objects.equals(obj1.getOriginalCommentString(), o
return( Objects.equals(obj1.getMeaning(), obj2.getMeaning())
&& Objects.equals(obj1.getModifies(), obj2.getModifies())
&& Objects.equals(obj1.getOriginalCommentString(), obj2.getOriginalCommentString())
&& Objects.equals(obj1.getReferences(), obj2.getReferences())
&& Objects.equals(obj1.getReturnDescription(), obj2.getReturnDescription())
&& Objects.equals(obj1.getReturnType(), obj2.getReturnType())
&& Objects.equals(obj1.getSuppressions(), obj2.getSuppressions())
&& Objects.equals(obj1.getTemplateTypeNames(), obj2.getTemplateTypeNames())
&& Objects.equals(obj1.getThisType(), obj2.getThisType())
&& Objects.equals(obj1.getThrownTypes(), obj2.getThrownTypes())
&& Objects.equals(obj1.getTypedefType(), obj2.getTypedefType())
&& Objects.equals(obj1.getType(), obj2.getType())
&& Objects.equals(obj1.getVersion(), obj2.getVersion())
&& Objects.equals(obj1.getVisibility(), obj2.getVisibility()))
以字符串形式给出方法列表,然后创建一个映射函数逐个测试它们,这是一种好的做法。我读过关于Java中反射的文章,但我不是那么精通 您可以使用如下方法:
<T> boolean equals(T obj1, T obj2, Iterable<? extends Function<? super T, ?>> fns) {
for (Function<? super T, ?> fn : fns) {
if (!Objects.equals(fn.apply(obj1), fn.apply(obj2))) {
return false;
}
}
return true;
}
等等。您可以使用如下方法:
<T> boolean equals(T obj1, T obj2, Iterable<? extends Function<? super T, ?>> fns) {
for (Function<? super T, ?> fn : fns) {
if (!Objects.equals(fn.apply(obj1), fn.apply(obj2))) {
return false;
}
}
return true;
}
等等。为什么不在类上实现equals?使用此逻辑重写equals方法如果您决定实现equals,请先阅读以下内容:14个字段太多,试着把它们分解成几个classes@AndrewTobilko为什么14个字段太多?为什么不在你的类上实现equals?用这个逻辑重写equals方法如果你决定实现equals,请先阅读:14个字段太多,试着将它们分解成几个classes@AndrewTobilko为什么14块地太多了?这对我来说越来越重要了。有没有办法把最后一个参数变成vararg,这样就不需要调用asList了?我越来越感兴趣了。有没有办法将最后一个参数转换为vararg,这样就不需要调用asList?