你根本不需要把后者在初始化时申明就行,以后要调用它可以在从结构的实例中调用.
你可以这样:
One(String[] a)
{//a用来初始化
//b用来保存操作结果
String[] b;
}public static void main(String args[])
{
One aone = new One();
//用aone.b调用b
你可以这样:
One(String[] a)
{//a用来初始化
//b用来保存操作结果
String[] b;
}public static void main(String args[])
{
One aone = new One();
//用aone.b调用b
actionPerformed(ActionEvent e)
{
One aone = new One();
aone.b = .....;
//这样可以吗?
}
我试过了在new 的时候,构造里面的参数怎么写?不能空着吧
private String[] _b;
One(String[] a, String[] b)
{
_a =a;
_b=b;
}
String[] a;
One aone = new One(a);
{
private String[] a;
private String[] b;
One(String[] a, String[] b)
{//a用来初始化
//b用来保存操作结果
this.a = a;
this.b = b;
}
actionPerformed(ActionEvent e)
{
if(e.getSource == 确定按钮)
//就把已经被选中的数据保存到b中
//请问怎么做?
b = 被选中的数据;
}
获得结果(){
return b;
}
}
a和b是通过“引用”传递的参数,能不能不用“获得结果()”方法来获得结果,而直接保存到b中?
那么问题就在这里,如果不在产生One对象前对参数b进行初始化的话,那么就要在One类中从新初始化(就是从新new一下,"b = new String[]"),这么一new的话,这句话“this.b = b;”就等于没用了,因为this.b和b已经指向不同的地址。如果在产生One对象前对b初始化,那么是不是就要这么写“b = new String[100]”,这么一来,用来保存结果的b就受到限制了(只能放100个数据)。
请问该如何处理这个问题,用Vector可以实现这个东西吗?
我详细的说一下:我要做的是一个控件(没有main()),用swing做的。GUI上有两个JList,左边是用来放List源`,有边用来放从左JList中挑选过来的List项。两个List中间有两个按钮“添加”“移除”,分别用来将左JList中的List项添加到右JList中,和把右Jlist中的项移除回左Jlist中。
构造方法中:One(String[] a, String[] b)的a[]用来初始化左JList,而b[]用来保存右Jlist中被选好的项,以便下次运行程序的时候没被选的还在左JList中,而上次运行时已经选好的项还在右Jlist中!
问题如楼顶
“那么就要在One类中从新初始化”,根本就是错误的想法。正确的是应该构造函数应该有缺省的值,或提供多个构造函数。
2、“如果在产生One对象前对b初始化,那么是不是就要这么写b = new String[100]”:b都已经初始化,为什么还要new?这样做有啥意义?