无法存储值类对象的ArrayList。 (code ++编辑) [英] Failed to store values in ArrayList of class object. (CODE EDITED)
问题描述
这基本上是一个Java $ C $ D转换器。它涉及到一个GUI让用户输入类的类型,名称和方法。要存储的值,我创建了一个类 VirtualClass
与的ArrayList< VirtualClass>班
来存储变量布尔isPrivate
,字符串的className
和字符串方法名
。然而,我发现,没有被存储到的ArrayList
...请大家帮我看看是什么问题。
This is basically a Java code converter. It involves a GUI let user input class type, name and method. To store the values, I've created a class VirtualClass
with an ArrayList<VirtualClass> classes
to store variables boolean isPrivate
, String className
and String methodName
. However, I found that nothing was stored into the ArrayList
...please help me to see what's the problem
下面是类 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的一些相关code
For reference, here's some relevant code from the GUI which let users create class
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
这是从另一个类用于显示的几个方法最终的java code
And here's a couple of methods from another class for display the final 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 code中的方法
Here's the method to generate the Java code
public String getJavaCode(){
String javaCode = (classObject.getPublic() + " class " +
stObject.getClassName() + stObject.getListSize() +
"{\n"+"\t"+"public void "+stObject.getMethodName()+"{\n"+"\t}"+"\n}");
return javaCode;
和是这个样子你会在我的计划显示,其中c应该是类名,男应该是方法的名称,而 0 = classes.size()
And what would display in my programme is like this, where c should be class name, m should be method name, and 0 = classes.size()
public class c0{
public void m{
}
}
谁能帮我察觉出了问题吗?
我只是不知道,我收到的似乎不工作答案。请帮助!
Can anyone help me to spot out the problem please? I just have no idea and the answers I received doesn't seem to work. Please help!
推荐答案
从您发布的信息,似乎很奇怪,你启动 VirtualClass stObject
到的actionPerformed
方法。它意味着,每次你重新创建对象。
From information you posted, seems strange that you initiate VirtualClass stObject
into actionPerformed
method. Its mean that each time you recreate your object.
请您 VirtualClass stObject
为全球作为例子,如:
private VirtualClass stObject;
...
stObject = new VirtualClass();
private class Handler implements ActionListener{
public void actionPerformed(ActionEvent event){
...
stObject.createClass(cName, mName, isP);
这篇关于无法存储值类对象的ArrayList。 (code ++编辑)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!