确定我正在处理的问题是为我正在构建的程序创建一个向导。与我无关,这是一个有点长篇大论的探索,因为我需要解释这个设置。
我目前有三个组合在一起构建向导框架并显示需要收集所有相关信息以创建新项目的所有面板。
第一个是JPanel的抽象扩展,以便某些值和方法始终可用,扩展下面的每个类都有自己独特的构造函数,用于传入填充各种组合框,列表等所需的数据。
public abstract class baseWizPanel extends JPanel {
protected boolean isValid = false;
protected final int lblWidth = 85;
public baseWizPanel(String Name) {
setLayout(new BorderLayout(0, 0));
JLabel lblStepName = new JLabel(Name);
}
public abstract boolean isDataValid();
public abstract void validate();
public abstract String getMessage();
}
第二个是一个类,它将baseWizardPanel与一个名称一起收集,这将用于存储未来版本中的其他内容。万一你想知道为什么甚至有它。
public class WizardStep {
private String Name;
private baseWizPanel pnlToAdd;
public <T extends baseWizPanel> WizardStep(String n, T p) {
this.Name = n;
this.pnlToAdd = p;
}
public String getName() {
return this.Name;
}
public Component getPanel() {
return this.pnlToAdd;
}
}
最后一个类是JDialog的扩展,它将所有部分组合在一起,并作为一个循序渐进的过程将它们呈现给用户。
以前我一直在使用类似的方式实现我的向导。
这可以很好地创建向导并将其显示给用户。我现在要做的是使用我已经构建的通用数据加载函数来将所有数据加载保存在一个地方,我需要能够从类的ArrayList创建向导。
所以我想去
public class loadData {
loadData(ArrayList<class> classestoload)
dataset1 = load data from data source
dataset2 = load data from data source
dataset3 = load data from data source
dataset4 = load data from data source
dataset5 = load data from data source
for each class in classestoload {
create class
if class = class1 {
use class1 constructor with dataset 1 & 2
}
if class = class2 {
use class1 constructor with dataset 5
}
if class = class3 {
use class1 constructor with dataset 2 & 3
}
if class = class4 {
use class1 constructor with dataset 4 & 5
}
}
}
我可以使用Create new class from a Variable in Java中的代码创建我需要的类但是要使用构造函数并传递我需要知道的类的正确数据,我可以使用instanceof但是我读过的所有内容都说这不是不错的选择。
现在我的问题是我应该在这里做什么,以便我不必使用instanceof或我应该使用什么而不是实例?
我希望我能正确解释,如果我没有,我会道歉。