gpt4 book ai didi

java - 干净的代码——在 Java 中压缩代码的最佳方式

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:41:49 26 4
gpt4 key购买 nike

我有这样的代码:

    for(int i=0; i < a; i++){
List<Integer> list = elementA.get(i);
SomeClass rg = new SomeClass(list, a, methodA(i));
int result = rg.generate();
var+=methodA2(i, result);
}
for(int i=0; i < b; i++){
List<Integer> list = elementB.get(i);
SomeClass rg = new SomeClass(list, b, methodB(i));
int result = rg.generate();
var+=methodB2(i, result);
}

如何避免这种代码重复?我可以创建执行此操作的函数,但是如何处理这些不同的方法呢?

最佳答案

使用 Java < 8,您可以创建一个接口(interface)(请注意,Java 8 中已经有一个 IntFunction 接口(interface)):

interface IntFunction<A> { A apply (int i); }

m(elementA, a, new IntFunction<A> () { public A apply(int i) { methodA(i); } });

你的方法看起来像:

private void m(Collection<List<Integer>> element, int a, IntFunction<A> f) {
for(int i=0; i < a; i++){
List<Integer> list = element.get(i);
SomeClass rg = new SomeClass(list, a, f.apply(i));
int result = rg.generate();
}
}

(为简洁起见,我省略了 methodA2:您需要第二个具有 apply(int, int) 的接口(interface))

这很冗长,与重复相比,好处并不明显。


有了 Java 8,它变得更干净了:

m(elementA, a, i -> methodA(i));
//or
m(elementA, a, this::methodA);

关于java - 干净的代码——在 Java 中压缩代码的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23202218/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com