有没有办法在非静态ArrayList中添加静态元素?
我有我的Collaborator类,这个类有一个Projects Arraylist。问题是,我的Project类有一个编辑项目的方法,但是当我进行编辑时,它不会更新我创建的协作者的Project ArrayList中的元素。
手动更新需要我在Collaborators Arraylist中运行Projects Arraylist,以搜索哪些合作者拥有我正在编辑的项目。
我在Main类中创建了一个静态项目对象,当我编辑他时,它似乎可以工作。但是我不能在方法内部创建静态对象。
class Collaborator {
String name;
String email;
ArrayList<Project> projects = new ArrayList<>();
我试图使整个ArrayList保持静态,但它使我创建的所有新协作者都有相同的项目,这是我不希望发生的。
提前谢谢。
我不完全理解您的问题,但仍试图帮助您解决问题。
我有我的Collaborator类,这个类有一个Projects Arraylist。问题是,我的Project类有一个编辑项目的方法,但是当我进行编辑时,它不会更新我创建的协作者的Project ArrayList中的元素。
如果你做的事情是正确的,这是不可能的。假设您想调用项目
类的方法,该类对对象的属性进行一些编辑。那你应该这样做。
projects.get(i).function_name()
您正在从ArrayList调用第i个Project
对象的函数,该函数实际上是从ArrayList更新对象的。
在问题的这一部分,我的项目类有一个编辑项目的方法,但是当我编辑时,
迫使我怀疑你可能做错了什么。
编辑意味着,您是否正在更新项目类对象?您正在调用哪个对象的方法来更新该对象?显示代码将帮助我们更好地理解您的问题。
我坚信您不需要将ArrayList设置为静态,因为您可以随时更新ArrayList的成员对象
如何使特定元素在非静态ArrayList中保持静态?
这是不可能的。
这根本没有道理。
static
关键字仅对变量和方法(以及不同上下文中的类)有意义。集合的元素不是变量。
如果您向我们展示了代码的相关部分,我们可能会建议您应该做什么。但你目前的做法是(正如他们所说的)“找错方向”。
我的Project类有一个编辑项目的方法,但是当我编辑时,它不会更新我创建的合作者中的Project ArrayList中的元素。
对此有许多可能的解释。但我们需要看到代码:
>
执行项目
编辑的代码(方法?)。
我建议,也许你在某个地方拿了一个项目的副本,并编辑了副本,而不是原件?
检查您将项目放入arraylist的位置、从何处取出项目以及在何处编辑项目-如果您使用以下任何方式:
projects.add(new Project(y))
然后将原始“y”项目的副本放入其中,编辑“y”时,副本不会更改。
问题内容: 直到几周前,我还以为我知道何时创建字段和方法或。例如,当一个字段(例如另一个类的对象)对于该类的任意数量的对象是唯一的时,应将其设置为。 但是几周后,我读到了有关JVM垃圾收集的信息。 我知道字段永远不会被垃圾收集,并且始终保持在内存中,除非类加载器本身是垃圾收集的。 但是,如果我不创建该字段,至少它将被垃圾回收。 因此,在使字段/方法静态化与否之间似乎有一条 很细的界限 。 有人可以
我不知道什么时候在程序中使用一个静态/非静态变量。 我理解非静态/静态变量之间的区别,但我只是不知道何时使用每一个变量。那么在上面的代码中,为什么函数不能是静态的呢?(什么时候应该是静态的?)
我有以下代码: 到目前为止,代码还可以,但我无法在主方法中实例化'in',比如,因为它显示
问题内容: 只是为了澄清我正在考虑的这个权利,在Java中,静态字段是整个类使用的变量/字段,还是可以用于引用该类的所有对象?非静态字段是由对象定义的变量吗?并且与对象1引用相同类的第二个对象可以具有与对象1的静态字段不同的值吗? 问题答案: 与实例变量不同,在创建该类的实例之前,可以访问该类中的静态字段或静态类变量。在运行时创建该类的实例时,将创建该类中的实例变量(非静态变量)。因此,直到创建该
我想澄清一下,在java中,静态字段是整个类使用的变量/字段,或者可以被引用该类的所有对象使用?非静态字段是由对象定义的变量?第二个对象引用与对象1相同的类,它可以对对象1的静态字段具有不同的值?
我的程序有问题。Eclipse写道: 我做错了什么?我的应用程序中有2个错误。班你能改进我的代码并解释一下吗?先谢谢你。 多边形 地聚线