用数组不就是能达到这个要求吗?
再不行就可以使用集合。
如果想动态创建class1可以使用class.forName("class1")
for(int i=0; i<n ; i++)
  A[i] = new class1();

解决方案 »

  1.   

    for(int i=0; i<n ; i++)
      A[i] = new A[i]();
      

  2.   

    用Map存放(key,value)
    key: "An"
    value:class1的实例
      

  3.   

    同意使用:class.forName("class1")
      

  4.   

    比如我要实例化n个Date的对象,名称必须为:A1,A2,...,An.不能是数组名称a[0],a[1],...
      

  5.   

    Map m = new HashMap();
        for (int i = 0; i < 10; ++i) {
          m.put("A"+(i+1), new Date());
        }
        System.out.println( ((Date)m.get("A1")).toString() );
    你想的直接用"A1"做对象名不可能
      

  6.   

    kingfish(八百里秦川@龙城异客) 的解答给我提供了新的思路。。但是,还没有根本解决。。大伙继续努力啊!!
      

  7.   

    我的毕业设计中也遇到过这问题,我同意使用Class这个类Class.forName("XXXX")
    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) {
        }
      

  8.   

    Getting the Methods of a Class Object
    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) {
        }
      

  9.   

    动态载入例如:Class someClass = Class.forName("foo.bar.SomeClass");  //JDBC 驱动也是动态加载的//如果之用类的默认构造方法的话只要这样:
    Object someObj = someClass.newInstance();
    //完成后再转换(锐化)
    SomeClass sc = (SomeClass)someObj;如果要调用其他带参数构造方法就要用 “反射” 查找具体构造方法然后调用
      

  10.   

    动态生成 java 类,编译。
    就能达到你的要求了,不过估计也要疯了。
      

  11.   

    能写个完整例子么??最后用System.out.println(n);观察结果//n变量,代表v1,v2,v3对象...至于类么,用Date好了。。大侠快做啊!!!做出来就加分了!!所有有苦劳的朋友均有分!!!
      

  12.   

    结合上面的,虽然不是很完美不知道这样行不行:
    ==========================================================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();
        }
    }==========================================================
      

  13.   

    先使用File IO 动态生成 *.java 文件,
    再使用Runtime 的 exec("java *.java") 进行编译。
      

  14.   

    辛苦 onefox(一品狐)  了! 写的不错,可是,还没符合要求。本贴要求用 比如 A1,A2,A3...这些名字当作 对象名。大侠以上程序只能用getDate("n" + i) 来代表对象,这和 a[i] 一样没符合要求。下面一项艰巨的任务就是 把以上Date对象赋给 A1,A2,...使 A1.getHours() 这样的方法可以实现。。(以上只能getDate("n" + i).getHours().)要求最后可以这样写:System.out.println(A1);   或 System.out.println(A1.getHours()); 大伙继续努力!!!!!
      

  15.   

    回复人: JavaVsNet(JavaVsNet) ( ) 信誉:100  2004-04-19 00:22:00  得分:0 
     
     
      我觉得解决问题的方法都是很灵活的,像楼主的这个问题其实对很多语言来说都不一定能轻易实现或者根本不能实现,就我来说就还没有想到方法实现。
    但是问题的关键是楼主可以绕开这一具体问题,而以其他具有相同效果的方法来实现这一功能不是更好吗?我不相信在楼主的程序中非要如问题这样才能完成功能。而且动态帮定是一个很好用也很重要的技术,在许多设计模式中都有涉及,为什么不用用这些通用而且好用的技术呢?
     
     
    ========================================================
    在JAVA不可能实现这个功能,基本上也没有其它编程语言有这样的功能。
      

  16.   

    有个建议:Java 如果能让对象名可以是变量,这该多好啊!!