正在更新 Java 中的特定 class
Updating specific class in Java
如果我像这样初始化 classes:
square s = new square(1,2,'$');
square s = new square(2,4,'$');
square s = new square(3,2,'$');
square s = new square(5,4,'$');
有什么方法可以 "get back" 我用 (1,2,'$')
初始化的 class 吗?当然,除了给它一个变量名,我不想这样做。
简单的回答:没有。
更长的答案:一旦您放弃 Java 中的引用,它就会丢失并被垃圾收集。但是,您没有理由不能使用相同的参数创建新对象。
旁注:这四行永远无法编译,因为您无法在同一上下文中声明后重新声明 s
。
更详细:如果删除重新声明,这里发生的事情是这样的:调用 square
的构造函数(使用 new
运算符)创建一个新实例,并且 returns 该实例的地址,存储在 s
中。当您将新值分配给 s
时,旧值将丢失 - 并且由于您没有机会在其他任何地方存储该旧引用,因此您之前创建的实例现在已经死了,从某种意义上说没有什么可以指向它。这意味着垃圾收集器会在下次它出现时找到它,并且它在堆上的 space 将被回收。
引用丢失,因此通过 garbage collector 自动收集。你唯一能做的就是初始化另一个变量并传递相同的参数。
如果您想准确描述您正在尝试做的事情,请继续,我们可能会提供进一步的帮助。
由于变量名相同,所以无法编译。我猜你正在寻找数组。
square[] s = new square[4];
s[0] = new square(1,2,'$');
s[1] = new square(2,4,'$');
s[2] = new square(3,2,'$');
s[3] = new square(5,4,'$');
然后您可以使用 s[0]
引用第一个 square
对象。
顺便说一句,你应该用大驼峰命名你的 class,即 Square
。看看 Java 命名约定 here.
我认为你的代码无法编译。
这将编译:
square s = new square(1,2,'$');
s = new square(2,4,'$');
s = new square(3,2,'$');
s = new square(5,4,'$');
如果这就是你的意思,那么就没有办法回到第一个方块,因为你已经重用了指针s。
无论如何,看看 Memento Pattern
如果我像这样初始化 classes:
square s = new square(1,2,'$');
square s = new square(2,4,'$');
square s = new square(3,2,'$');
square s = new square(5,4,'$');
有什么方法可以 "get back" 我用 (1,2,'$')
初始化的 class 吗?当然,除了给它一个变量名,我不想这样做。
简单的回答:没有。 更长的答案:一旦您放弃 Java 中的引用,它就会丢失并被垃圾收集。但是,您没有理由不能使用相同的参数创建新对象。
旁注:这四行永远无法编译,因为您无法在同一上下文中声明后重新声明 s
。
更详细:如果删除重新声明,这里发生的事情是这样的:调用 square
的构造函数(使用 new
运算符)创建一个新实例,并且 returns 该实例的地址,存储在 s
中。当您将新值分配给 s
时,旧值将丢失 - 并且由于您没有机会在其他任何地方存储该旧引用,因此您之前创建的实例现在已经死了,从某种意义上说没有什么可以指向它。这意味着垃圾收集器会在下次它出现时找到它,并且它在堆上的 space 将被回收。
引用丢失,因此通过 garbage collector 自动收集。你唯一能做的就是初始化另一个变量并传递相同的参数。
如果您想准确描述您正在尝试做的事情,请继续,我们可能会提供进一步的帮助。
由于变量名相同,所以无法编译。我猜你正在寻找数组。
square[] s = new square[4];
s[0] = new square(1,2,'$');
s[1] = new square(2,4,'$');
s[2] = new square(3,2,'$');
s[3] = new square(5,4,'$');
然后您可以使用 s[0]
引用第一个 square
对象。
顺便说一句,你应该用大驼峰命名你的 class,即 Square
。看看 Java 命名约定 here.
我认为你的代码无法编译。
这将编译:
square s = new square(1,2,'$');
s = new square(2,4,'$');
s = new square(3,2,'$');
s = new square(5,4,'$');
如果这就是你的意思,那么就没有办法回到第一个方块,因为你已经重用了指针s。 无论如何,看看 Memento Pattern