gpt4 book ai didi

java - 将公共(public)父类(super class)的 Class 传递给 Function;函数应该检查对象是否是传递的类的实例

转载 作者:行者123 更新时间:2023-12-01 20:11:13 24 4
gpt4 key购买 nike

我有不同的框架,它们扩展了存储在 ArrayList 中的 MyFrame

abstract public class MyFrame extends JFrame {
public MyFrame(){
super();
}
abstract public void update();
}

现在我想要一个传递 ArrayList 和类类型列表的函数,该函数应该对传递类型的所有对象调用更新

public void foo(ArrayList<MyFrame> frames, ArrayList<Class> types){
for(MyFrame f : frames){
for(Class c : types){
if(f instanceof c){
f.update();
}
}
}
}

最佳答案

1) 您不需要向 ArrayList 添加类,但需要向列表添加 MyFrame 的实例。

2)然后你可以做如下的事情

public void foo(List<MyFrame> frames){
for(MyFrame f : frames){
f.update();
}
}

Edit based on your comment

import java.util.ArrayList;
import java.util.List;


public class Main {
public static void main(String[] args) {
List<MyFrame> myFrameList = new ArrayList<MyFrame>();
myFrameList.add(new A());
myFrameList.add(new B());
foo(myFrameList,A.class);


}
public static void foo(List<MyFrame> myFrameList, Class c)
{
for(MyFrame f:myFrameList)
{
if(c.isInstance(f))
{
f.update();
}
}
}
}

abstract class MyFrame
{
public abstract void update();
}
class A extends MyFrame
{

@Override
public void update() {
System.out.println("Aaaaa");
}

}

class B extends MyFrame
{

@Override
public void update() {
System.out.println("Bbbb");
}

}

关于java - 将公共(public)父类(super class)的 Class 传递给 Function;函数应该检查对象是否是传递的类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46666368/

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