有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用for循环创建多个对象

我想要的是在for循环中创建多个视图 范例

for(int i =1; i<5; i++){
GridView view = new Gridview(this);
}

但是它创建了5个同名的gridview。。所以将来我不能为特定的gridview设置不同的选项。如何获取在循环get view+I name中创建的gridivew


共 (6) 个答案

  1. # 1 楼答案

    此外,在您的示例中,当for循环的一个步骤结束时,对该对象的引用将丢失,因为创建它们的范围将保留。在没有对象引用的情况下,垃圾收集器进入并释放内存,删除对象

    因此,即使是创建的最后一个对象也无法访问。如果您这样修改代码,在代码末尾,您将只实例化最后一个对象:

    GridView view;
    for(int i =1; i<5; i++){
        view = new Gridview(this);
    }
    

    现在,对象存在于代码段末尾的作用域中。但只有一个物体真的存在

    因此,解决方案是将对象存储在一些额外的结构中:一个数组(如果您确切知道需要多少个对象),或者一个自动态分配的集合结构。在其他答案中,你有两个例子


    添加了:您实际需要的(动态构建对象的引用名称)称为元编程。我不知道这在Java中是否可行,但下面是一个用PHP实现的示例:

    class Object {
        function hello(){
            echo "Hello \n";
        }
    }
    
    for($i =1; $i<5; $i++){
        $name = "view".$i;
        $$name = new Object();
    }
    
    $view1->hello();
    $view2->hello();
    $view4->hello();
    

    下面是可运行代码:http://codepad.org/bFqJggG0

  2. # 2 楼答案

    GridView[] view=new GridView[5];
    for(int i=1;i<5;i++){
    view[i]=new GridView(this);}
    

    现在我想你可以设定特定的选项了

  3. # 3 楼答案

    我认为你可以这样做:

    for(int i =1; i<5; i++){
    GridView view = new Gridview(this);
    view.setId(i);
    }
    

    然后,您可以在所有视图之间进行差异

  4. # 4 楼答案

    使用ListGridViews

    List<GridView> grids = new ArrayList<GridView>();
    for(int i =1; i<5; i++){
        grids.add(new Gridview(this));
    }
    
  5. # 5 楼答案

    我认为这段代码将创建5个GridView,其中4个将立即用于垃圾收集,因为您的代码不再引用它们

    如果你在一个循环中创建它们,那么我想我会把它们存储在一个数据结构中,比如列表或地图,然后通过索引或键访问它们

  6. # 6 楼答案

    使用列表

    List<GridView> views = new ArrayList<GridView>();
    for(int i = 1; i < 5; i++) {
        views.add(new GridView(this));
    }
    

    然后你就可以用

    views.get(i);