用数组不就是能达到这个要求吗?
再不行就可以使用集合。
如果想动态创建class1可以使用class.forName("class1")
for(int i=0; i<n ; i++)
A[i] = new class1();
再不行就可以使用集合。
如果想动态创建class1可以使用class.forName("class1")
for(int i=0; i<n ; i++)
A[i] = new class1();
解决方案 »
- panel 内放置子panel 并显示图片的问题
- 急~~~在线等待. 高手进: JAVA, 关于填充 1MB 零 的问题. 强者送分
- 怎么在panel上添加图片
- 为什么continue 返回到back1的时候 不执行?
- 学习JAVA用那个开发软件好点.....请高手帮忙......
- 请问大家 我想编写的俄罗斯方块 ,我有2个地方不明白,不知道算法怎么实现,请帮我看看谢谢!!!
- ThreadLocal类
- 请问java中匿名函数的作用
- 调查:web designing and web hosting
- 请教Java SWING高人一个界面的实现问题如何解决?
- [菜鸟学JAVA]刚开始学,装个JB7搞了一天,好好看了几页书,到了XML部分,要import javax.xml.parsers.*,org.w3c.dom.*,上网看了一下,好
- 如何让JInternalFrame的窗口的样式与windows窗口的样式相同?以及如何让JInternalFrame窗口最小化以后,位于父窗口的左下角
A[i] = new A[i]();
key: "An"
value:class1的实例
for (int i = 0; i < 10; ++i) {
m.put("A"+(i+1), new Date());
}
System.out.println( ((Date)m.get("A1")).toString() );
你想的直接用"A1"做对象名不可能
JDBC就是如此用的仔细看Class类的doc,可以发现有java.lang.reflect
其中有Field Method 类Getting the Field Objects of a Class Object
There are three ways of obtaining a Field object from a Class object.
Class cls = java.awt.Point.class;
// By obtaining a list of all declared fields.
Field[] fields = cls.getDeclaredFields();
// By obtaining a list of all public fields, both declared and inherited.
fields = cls.getFields();
for (int i=0; i<fields.length; i++) {
Class type = fields[i].getType();
process(fields[i]);
}
// By obtaining a particular Field object.
// This example retrieves java.awt.Point.x.
try {
Field field = cls.getField("x");
process(field);
} catch (NoSuchFieldException e) {
}Getting and Setting the Value of a Field
This example assumes that the field has the type int.
try {
// Get value
field.getInt(object);
// Set value
field.setInt(object, 123);
// Get value of a static field
field.getInt(null);
// Set value of a static field
field.setInt(null, 123);
} catch (IllegalAccessException e) {
}. Invoking a Method Using a Method Object
try {
Object result = method.invoke(object, new Object[] {param1, param2, ..., paramN});
} catch (IllegalAccessException e) {
} catch (InvocationTargetException e) {
}
There are three ways of obtaining a Method object from a Class object.
Class cls = java.lang.String.class;
// By obtaining a list of all declared methods.
Method[] methods = cls.getDeclaredMethods();
// By obtaining a list of all public methods, both declared and inherited.
methods = cls.getMethods();
for (int i=0; i<methods.length; i++) {
Class returnType = methods[i].getReturnType();
Class[] paramTypes = methods[i].getParameterTypes();
process(methods[i]);
}
// By obtaining a particular Method object.
// This example retrieves String.substring(int).
try {
Method method = cls.getMethod("substring", new Class[] {int.class});
process(method);
} catch (NoSuchMethodException e) {
}
Object someObj = someClass.newInstance();
//完成后再转换(锐化)
SomeClass sc = (SomeClass)someObj;如果要调用其他带参数构造方法就要用 “反射” 查找具体构造方法然后调用
就能达到你的要求了,不过估计也要疯了。
==========================================================import java.util.Date;
public class Test {
//一个2维数组充当 map
private Object[][] map = new Object[2][10];
public Test() {
//通过字符串产生类实例,并添加到 map 组成名字关联
try {
Class someClass = Class.forName("java.util.Date");
for(int i = 0; i < 10 ; i++) {
map[0][i] = "n" + i;
map[1][i] = someClass.newInstance();
}
} catch(Exception e) { }
//通过名字返回实例
for(int i = 0; i < 10 ; i++) {
System.out.println(getDate("n" + i));
}
}
//通过名字向 map 提取类实例
private Date getDate(String name) {
for(int i = 0; i < 10 ; i++) {
if(name.equals((String)map[0][i]))
return (Date)map[1][i];
}
return null;
}
public static void main(String[] args) {
new Test();
}
}==========================================================
再使用Runtime 的 exec("java *.java") 进行编译。
我觉得解决问题的方法都是很灵活的,像楼主的这个问题其实对很多语言来说都不一定能轻易实现或者根本不能实现,就我来说就还没有想到方法实现。
但是问题的关键是楼主可以绕开这一具体问题,而以其他具有相同效果的方法来实现这一功能不是更好吗?我不相信在楼主的程序中非要如问题这样才能完成功能。而且动态帮定是一个很好用也很重要的技术,在许多设计模式中都有涉及,为什么不用用这些通用而且好用的技术呢?
========================================================
在JAVA不可能实现这个功能,基本上也没有其它编程语言有这样的功能。