gpt4 book ai didi

java - 无法在类对象的 ArrayList 中存储值。 (代码已编辑)

转载 作者:行者123 更新时间:2023-12-01 13:56:06 25 4
gpt4 key购买 nike

这基本上是一个 Java 代码转换器。它涉及一个 GUI,让用户输入类类型、名称和方法。为了存储这些值,我创建了一个类 VirtualClassArrayList<VirtualClass> classes存储变量boolean isPrivate , String classNameString methodName 。然而,我发现ArrayList中没有存储任何内容。 ...请帮我看看问题出在哪里

下面是类(class)VirtualClass

import java.util.*;

public class VirtualClass {

private static ArrayList<VirtualClass> classes = new ArrayList<VirtualClass>();
private boolean isPrivate;
private String className;
private String methodName;

public void setVirtualClass(String name, String method, boolean isP){
this.className = name;
this.isPrivate = isP;
this.methodName = method;
}

public void createClass(String name, String method, boolean isP){
this.className = name;
this.isPrivate = isP;
this.methodName = method;
classes.add(this);
}

作为引用,这里有一些 GUI 中的相关代码,可让用户创建类

public class GuiAddClass extends JFrame{
private VirtualClass stObject;
...

private class Handler implements ActionListener{

public void actionPerformed(ActionEvent event){

String cName = inputClassName.getText();
String mName = inputMethodName.getText();
boolean isP = true;

if (classObject.checkName(cName) == false){

JOptionPane.showMessageDialog(null, "Class name invalid. " +
"\nEntered name should not contain java keywords or equal to other existing names. " +
"\nPlease try again.");

} else if (classObject.checkName(cName) == true) {

JOptionPane.showMessageDialog(null, "Class saved.");
// this message pane has popped up
cName = inputClassName.getText();
mName = inputMethodName.getText();

if (event.getSource() == publicButton) {
isP = false;
} else if (event.getSource() == privateButton) {
isP = true;
}
stObject = new VirtualClass();
stObject.createClass(cName, mName, isP);
}

}// end actionPerformed()

}// end Handler class

这是另一个类中的几个方法,用于显示最终的 javaCode

public String getClassName(){
String cName = "classname";
String c = "c";
for (int i=0; i<classes.size(); i++){
c = classes.get(i).className;
}
cName = c;
return cName;
}

public String getMethodName(){
String mName = "methodname";
String m = "m";
for (int i=0; i<classes.size(); i++){
m = classes.get(i).methodName;
}
mName = m;
return mName;
}

public boolean getIsPrivate(){
boolean isP = false;
for (int i=0; i<classes.size(); i++){
isP = classes.get(i).isPrivate;
}
return isP;
}

这里是生成Java代码的方法

    public String getJavaCode(){
String javaCode = (classObject.getPublic() + " class " +
stObject.getClassName() + stObject.getListSize() +
"{\n"+"\t"+"public void "+stObject.getMethodName()+"{\n"+"\t}"+"\n}");
return javaCode;

我的程序中显示的内容是这样的,其中 c 应该是类名,m 应该是方法名,0 = classes.size()

public class c0{
public void m{
}
}

谁能帮我找出问题所在吗?我只是不知道,我收到的答案似乎不起作用。请帮忙!

最佳答案

从您发布的信息来看,您将 VirtualClass stObject 启动到 actionPerformed 方法中似乎很奇怪。这意味着每次您重新创建对象时。

使您的VirtualClass stObject成为全局,例如:

private VirtualClass stObject;

...

stObject = new VirtualClass();

private class Handler implements ActionListener{

public void actionPerformed(ActionEvent event){

...

stObject.createClass(cName, mName, isP);

关于java - 无法在类对象的 ArrayList 中存储值。 (代码已编辑),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19617492/

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