【问题标题】:Misunderstood object instantiation in JavaJava中被误解的对象实例化
【发布时间】:2017-05-29 12:50:04
【问题描述】:

我有以下 code sn-p 用于基元数组实例化

int[] a = new int[] {10, 20, 30}

是否可以对任何 Object Array 实例化做同样的事情? 有点像..

 public class MyObject {
     int a;
     char b;
 }

然后:

 public class Main(){
     public static void main(String[] args){
         MyObject[] = new MyObject[] { {10, 'a'}, {20, 'b'}}
     }
 }

【问题讨论】:

  • 是的,这真的很有帮助!谢谢!

标签: java arrays reference instantiation


【解决方案1】:

不是隐含的。您必须使用构造函数来初始化每个对象。这是一个例子:

public class Example {

    static class MyObject {
        int a;
        char b;

        public MyObject(int a, char b) {
            this.a = a;
            this.b = b;
        }
    }

    public static void main(String[] args) {
        MyObject[] objs = new MyObject[] {new MyObject(10, 'a'), new MyObject (20, 'b')};
    }
}

【讨论】:

    【解决方案2】:

    您需要在 MyObject 类中编写适当的构造函数(它接受 intchar 参数并初始化成员 ab),然后使用以下命令初始化数组:

    MyObject[] arr = new MyObject[] {new MyObject(10, 'a'), new MyObject (20, 'b')};
    

    【讨论】:

      【解决方案3】:

      你必须在类中声明一个构造函数。

      public class MyObject {
         int a;
         char b;
         MyObject(int a, char b){
          this.a = a;
          this.b = b;
         }
      }
      

      之后你可以像这样初始化数组

      MyObject[] somedamn = new MyObject[] { new MyObject(10,'a'), new MyObject(20,'b')};
      

      【讨论】:

        【解决方案4】:

        在你的 MyObject 类中创建一个构造函数:

        public MyObject(int x, char c) {
            // comment: set them equal to the variables you put up in your MyObject class already
        }
        

        然后你可以在你的Main类中创建一个对象:

        MyObject object1 = new MyObject(10, 'a');
        

        然后将object1 放入数组中:array[0] = object1

        或者您可以将new MyObject(10, 'a') 直接存储到数组中 - 但如果您是新手,可能会有点难以理解。

        【讨论】:

          猜你喜欢
          • 2013-03-29
          • 2012-07-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-21
          • 2011-06-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多