【问题标题】:How to create an array in Java with multiple data types to be used in another class [closed]如何在 Java 中创建具有多种数据类型的数组以在另一个类中使用 [关闭]
【发布时间】:2017-07-08 00:52:21
【问题描述】:

所以我是 Java 新手,在编程的同时也在学习。我有一个名为 Compiler 的类,它有许多不同数据类型的变量。我目前将它们作为单独的变量,但理想情况下它们需要在一个数组列表中,然后我可以在另一个名为 Broker 的类中使用它。

import java.util.ArrayList;

public class Compiler{
        public static String item="top";
        public static Integer minprice=8;
        public static Integer maxprice=15;
        public static Integer qty=1;

这是我的代码的开始,我一直在尝试制作一个可以在我的 Broker 类中使用的数组,但我很苦恼,有人可以帮忙吗?

【问题讨论】:

  • 在您的 Broker 类中,您可以创建 Compiler 实例的 ArrayList(尽管从声明中删除静态 - 它具有在这种情况下您不想要的特定语义 - 尽管没有看到更多代码很难告诉)。例如:List compilers = new ArrayList(); compilers.add(new Compiler()); ...
  • 不清楚变量是如何存储的。应该是一个对象中的多个数组还是多个对象的一个​​数组?
  • 欢迎来到 Stack Overflow!请使用tour,环顾四周,并通读help center,尤其是How do I ask a good question?What topics can I ask about here?。 - 你的问题是要准确地回答。也许你解释了你的程序的目的以及你认为你需要这个数组的原因......
  • 阅读this

标签: java arrays class arraylist


【解决方案1】:

您可以创建一个Object[] 数组,您可以在其中存储任何值:

Object[] array = new Object[]{"top", 8, 15, 1};

但是,通常情况下,最好定义一个类,将这些值分配给字段(通常由 get.../set... 方法访问),每个字段都有明确定义的类型和含义。

另外,static 表示字段存储在类中,并且它们在每个 Compiler 对象中具有相同的值,这可能不是您想要的。

【讨论】:

    【解决方案2】:

    如果您想存储多个 Compiler 对象,那么您可以像这样使用 ArrayList<Compiler>(正如 James Fry 在 cmets 中提到的那样):

    public class Compiler {
        public String item="top";
        public Integer minprice=8;
        public Integer maxprice=15;
        public Integer qty=1;
    }
    
    public class Broker {
        // If you are using Java SE 7,          you can omit the type here
        ArrayList<Compiler> arr = new ArrayList<Compiler>();
    }
    

    为了改进设计,您可以将访问修饰符设置为private并创建getter and setter functions

    您可以使用add(T) and remove(int) 方法添加和删除元素。

    【讨论】:

    • 对不起,我还是新手,那如何将项目添加到数组列表中?
    • 从 Java 7 开始可以省略类型(使用菱形语法)。
    • @DavidConrad 哦,谢谢! :)
    • @Olivia 看我的编辑 :)
    【解决方案3】:

    您不能在单个 ArrayList 中混合不同类型。如果您的目标是将这四个变量传递给 Broker,然后将 String 用于一件事,将第一个 int 用于其他事物等,只需使字段非静态并构造 Compiler 对象,然后将对象传递给 Broker 并检索来自那里的变量。

    【讨论】:

      猜你喜欢
      • 2012-07-02
      • 2017-12-19
      • 2017-08-08
      • 2018-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多