Java:为对象数组分配内存的有效方法
在下面的代码中,我试图避免最后三行为类实例分配内存。关于如何将内存分配部分放入类定义中,有什么建议吗?所以我想做的是能够执行Java:为对象数组分配内存的有效方法,java,Java,在下面的代码中,我试图避免最后三行为类实例分配内存。关于如何将内存分配部分放入类定义中,有什么建议吗?所以我想做的是能够执行pInfo[0].sValue=“string”紧跟在AClass[]pInfo=新的AClass[10] class AClass { private String sName=""; private String sValue=""; } AClass [] pInfo = new AClass[10]; // how to
pInfo[0].sValue=“string”代码>紧跟在AClass[]pInfo=新的AClass[10]代码>
class AClass {
private String sName="";
private String sValue="";
}
AClass [] pInfo = new AClass[10];
// how to avoid the code below or bring them into class definition?
pInfo[0] = new AClass();
pInfo[1] = new AClass();
...
pInfo[9] = new AClass();
编辑:我所说的效率是指代码量+代码可读性
AClass[] pInfo = {new AClass(),new AClass(), etc.};
或
AClass[]pInfo=新的AClass[10];
对于(int i=0;i
您可以尝试以下方法:
class AClass {
public String sName="";
public String sValue="";
}
class AClassArray {
public AClass[] pInfo;
public AClassArray() {
pInfo = new AClass[10];
for(int i = 0; i < pInfo.length; i++)
pInfo[i] = new AClass();
}
}
无法避免这种情况,您将需要显式地为数组的每个元素指定一个值
声明数组在创建时为其元素提供初始值
声明引用类型的初始值为null
您是指键入有效还是性能有效?利用构造函数参数初始化字段可能更好,因此您可以这样编写:AClass[]pInfo=new AClass[]{new AClass(“name-1”,“value-1”),…}代码>@Yogu,代码+代码的数量readability@Woot4Moo:点击submit太快此功能正常,但扩展性不强。您最好使用向量或列表,而不是重新发明轮子。@Code Guru:当然不是!底层数据结构是一个数组@DougRamsey如果我想创建BClass
并拥有这个新类的数组,该怎么办?现在我必须写一个BClassArray
。另一方面,诸如Vector
或List
之类的通用集合将与我选择的任何类一起工作,而无需为其编写自定义数组类。(也许“可扩展”这个词不太适合描述这个问题…@DougRamsey,可能是…,我不了解Java 5以来所有的语言变化-(如果大小<0,则可以利用此对象,因为它将引发异常并且不是最终的。
class AClass {
private String sName="";
private String sValue="";
public static final AClass[] getArrayOfObjs(int size){
if(size <= 0)
return null; //You can also create your custom exception to be thrown here
AClass[] array = new AClass[size];
for(int i = 0; i < size; i++)
{
array[i] = new AClass();
}
return array;
}
}
AClassArray aClassArray = new AclassArray();
aClassArray.pInfo[i].sXXXX;
class AClass {
private String sName="";
private String sValue="";
public static final AClass[] getArrayOfObjs(int size){
if(size <= 0)
return null; //You can also create your custom exception to be thrown here
AClass[] array = new AClass[size];
for(int i = 0; i < size; i++)
{
array[i] = new AClass();
}
return array;
}
}
AClass [] pInfo = AClass.getArrayOfObjs(10);