gpt4 book ai didi

java - 如何迭代一个类的方法,然后迭代返回的对象并调用另一个方法?

转载 作者:行者123 更新时间:2023-12-05 07:48:54 26 4
gpt4 key购买 nike

假设我有以下类(class):

public class ExampleList{
// fields

List<A> getAList(){}
List<B> getBList(){}
List<C> getCList(){}
//A, B and C all extends class X with field num
}

public class Example{
ExampleList getExampleList(){}
}

public class Test{
main(){
Example example = //from somewhere I get object;

List<A> lA = example.getExampleList().getAList();
List<B> lB = example.getExampleList().getBList();
List<C> lC = example.getExampleList().getCList();

//Currently I am doing
if(lA != null) {
//iterate and call getCount(num)

if(lB != null) {
//iterate and call getCount(num)

if(lC != null) {
//iterate and call getCount(num)

}

getCount(int num) { //do something }
}

我想做的是动态迭代 ExampleList 的所有方法并只调用一次 getCount(num)。喜欢:

main(){
for ( Methods mList : Methods)
for ( X x: mList )
getCount(x.getNum);
}

我知道我可以创建一个通用方法,它采用任何扩展 X 的列表,我可以在那里迭代每个列表并调用 getCount()。但我也希望能够迭代一个类的方法。有什么办法可以实现吗?

我知道我可以通过反射获得 getter 方法列表。但我不知道如何在这种情况下使用它。

顺便说一句,这个问题不是关于如何使用反射获取方法列表的。更多的是关于如何使用它或反射如何工作。

最佳答案

遍历给定类的方法:

    // Get the instance of the class
X instance = X.class.newInstance();
// Run through all methods of the class
for(Method m : instance.getClass().getDeclaredMethods()) {
// The first parameter of invoke is an instance of X
// The second parameters are the parameters to pass to the method
m.invoke(instance, new Object[]{});
}
// do the call to getCount
getCount();

如果您有一个列表< X >,只需多次调用它即可。

要使用反射,起点是 https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html

希望对您有所帮助:)

关于java - 如何迭代一个类的方法,然后迭代返回的对象并调用另一个方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38017882/

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