实例化对象Java

时间:2013-04-07 09:22:55

标签: java object loops properties

假设我有10个物体。现在,我创建它们,我存储它们的唯一方法是在该对象中具有某些值的String数组。我不会将实际对象本身存储在任何地方。有什么办法可以根据字符串数组访问对象吗?

String[] someArray = new String[10];


 some loop (i = 1 to 10)

       Object newObject = new Object("hello" + i);

       someArray[i] = newObject.returnSomeStringInTheObject();

repeat

现在,我有一个字符串数组。我可以访问在i = 3处创建的对象吗?

每个字符串都不同。

5 个答案:

答案 0 :(得分:4)

因为你的每个字符串都不同,我会使用地图,例如:

final Map<String, Object> someMap = new HashMap<String, Object>();

// some loop (i = 1 to 10)

   Object newObject = new Object("hello" + i);
   someMap.put(newObject.returnSomeStringInTheObject(), newObject);

// repeat

然后,您可以使用地图从“someString”

返回一个对象

答案 1 :(得分:3)

如何保存将字符串从数组映射到实际对象的HashMap? 如果您没有在代码中的某处保留对该对象的引用,则可能会被垃圾回收器从内存中删除,并且您无法控制此进程。即使它还没有删除,但是当你想要访问它时,你将没有实际的参考资料,你可以使用它。

答案 2 :(得分:2)

当您在循环中进行下一次迭代时,您的对象不再可访问,因此您无法以任何方式访问它。不过,您可以创建从对象类到字符串的某种转换器,反之亦然。这样,您就可以重建对象:

public getObjectFromString(String string) {
    return YourClass.createFromString(string);
}

public getStringFromObject(YourClass obj) {
    Return obj.toString();
}

答案 3 :(得分:1)

所以基本上你想将实例的字符串表示转换为Object。

覆盖类中的toString方法:这将创建对象的String表示。

public String toString(){
   return "attr1 :"+ value1
          + "; attr2 :"+ value2;  
} 

获得价值;您需要解析对象的String表示并创建新对象。

String x = someArray[i]; //read toString value from array

在上面的案例中,每个属性都用分号分隔。属性名称和值由冒号(:)分隔。因此,您可以使用String实用程序进行解析。

答案 4 :(得分:1)

你所要求的是不可能的。一旦你退出创建对象的循环,对象就会消失,除非你将它们存储在某个地方,你说你不能这样做。

但是,您可以构造一个与前一个对象相同的新对象

 class myObject {
     public myObject(String str){
          someStringInThisObject = str
     }
}

然后,在你的主要课程中:

 myObject m = new myObject(someArray[i]);