如果我错了,请纠正我,我只想澄清一点,我理解这一点。
在java中创建对象时,使用new
关键字后跟类类型。防爆。 new [someclassnamehere]();
根据构造函数,您可以在创建对象时通过在参数中提供参数来传递参数。
我不确定只使用new
关键字创建一个新对象的代码行是否有用,因为实际上没有任何内容持有对该信息的引用。但它似乎是正确的。
因此,您可以使用type name
创建一个包含对您要创建的新对象的引用的变量。例如:Employee someData;
。但它还没有实际引用一个对象,因为尚未创建一个对象。所以通过应用上面讨论的信息:
Employee someData = new Employee(name);
我们现在创建了一个Employee object
,其中包含员工的某些名称。 new
关键字创建了一个对象类Employee
的实例,其中someData
变量引用了新创建的对象。
所以现在可以说someData
变量引用Employee object
,因为它包含存储对象存储位置的内存地址。该地址将允许我们访问对象的实际数据,在这种情况下是员工的名称。
如果我创建的数据类型为ArrayList
的{{1}},我可以将Employee
存储在其中。所以我可以将Employee objects
变量添加到arrayList以及someData
,someData2
等。 (只是假设它们都是相同的类型,但包含不同的员工信息)。
因此,每个变量都包含对这些对象的引用。然后,someData3
对象也包含对这些对象的引用,因为ArrayList
元素包含引用ArrayList
的someData变量。
示例:
Employee Objects
我确信到目前为止我已经明白了这个想法,但是当你实际上没有创建一个参考变量时,稍微让我失望的是。
因此,假设您创建了一个创建对象的循环(正在从某个数据库中读取数据等)并将其添加到ArrayList.get(1) -> someData -> reference variable(address) -> employee Object
ArrayList.get(2) -> someData2 -> reference variable(address) -> employee Object2
。在此循环中,您将收集所需的数据并使用该数据创建对象,然后将其直接添加到ArrayList
。
让我们说它看起来像这样(一些伪代码和实际代码的组合)
ArrayList
为简单起见,我们说循环运行了5次,因此创建了5个对象。
这意味着它向ArrayList<Employee> list = new ArrayList<Employee>();
// While data from the database still exist (while loop,etc)
// extract some sort of data from the database, such as their name and hours
// create an object of this information and store it in an ArrayList
list.add(new Employee(name, hours);
// end loop
添加了5个对象,并且对这些对象的引用实际上包含在ArrayList元素中。因此,要将第一个对象添加到ArrayList List
,您将使用ArrayList
(我很确定ArrayList从1开始而不是0用于索引),这将返回对该对象的引用。
这是通过使用循环创建对象的正确和标准方法吗?
答案 0 :(得分:0)
我不确定只需要使用new关键字创建一个新对象的代码行是否有用,因为实际上没有任何内容持有对该信息的引用。但它似乎是正确的。
想象一下构造函数启动一个新线程。没有参考,但
new AmazingThread();
在这种情况下很好。
嗯,这个问题很大。是的,创建这样的对象是完全合法的。你可以想到ArrayList有自己的变量来存储引用。