각 배열에 createtempobjectname() 메서드로 만든 "이름"을 지정하여 런타임에 배열을 인스턴스화 할 수있는 클래스를 만들려고합니다. 이 프로그램을 실행하는 데 문제가 있습니다. 또한 런타임 중에 생성 된 특정 객체에 액세스하여 값을 변경하거나 액세스하여 해당 어레이에 액세스하는 방법을 확인하고자합니다. 이것은 지금까지 내 엉망입니다, 컴파일하지만 런타임 예외가 발생합니다.Java : 런타임에 다른 이름의 배열 객체를 만들고 액세스/업데이트
import java.lang.reflect.Array;
public class arrays
{
private static String temp;
public static int name = 0;
public static Object o;
public static Class c;
public static void main(String... args)
{
assignobjectname();
//getclassname();//this is supposed to get the name of the object and somehow
//allow the arrays to become updated using more code?
}
public static void getclassname()
{
String s = c.getName();
System.out.println(s);
}
public static void assignobjectname()//this creates the object by the name returned
{ //createtempobjectname()
try
{
String object = createtempobjectname();
c = Class.forName(object);
o = Array.newInstance(c, 20);
}
catch (ClassNotFoundException exception)
{
exception.printStackTrace();
}
}
public static String createtempobjectname()
{
name++;
temp = Integer.toString(name);
return temp;
}
}
왜 이렇게했는지 설명하면 도움이 될 것입니다. 여기에서하려고하는 것보다 성취하려고 시도하는 것에 대해 훨씬 더 깨끗한 방법이있을 것입니다. 이 배열의 핵심은 무엇입니까? 왜 그들은 이름을 지어야합니까? 그들에게 무엇을 저장할 것입니까? –
두 개 이상의 개체를 구별 할 수있는 다른 방법이 없으므로 이름을 지정해야합니다. ArrayList를 저장하는 것과 비슷하지만 arraylist에 액세스해야 할 때마다 객체에서 문자열을 추출하는 것이 너무 느립니다. – pandoragami