Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:为对象数组分配内存的有效方法_Java - Fatal编程技术网

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);