请考虑以下代码:
DummyBean dum = new DummyBean();
dum.setDummy("foo");
System.out.println(dum.getDummy()); // prints 'foo'
DummyBean dumtwo = dum;
System.out.println(dumtwo.getDummy()); // prints 'foo'
dum.setDummy("bar");
System.out.println(dumtwo.getDummy()); // prints 'bar' but it should print 'foo'
Run Code Online (Sandbox Code Playgroud)
所以,我想复制dum
到dumtwo
并更改dum
而不影响dumtwo
.但上面的代码并没有这样做.当我改变某些内容时dum
,也会发生同样的变化dumtwo
.
我想,当我说dumtwo = dum
,Java 只复制引用.那么,有没有办法创建一个新的副本dum
并分配给它dumtwo
?
在玩这个谜题(这是一个Java关键字琐事游戏)时,我遇到了native
关键字.
Java中的native关键字用于什么?
如果我们查看Java Object类,那么我们可以找到一些方法,如:
public native int hashCode()
protected native Object clone()
Run Code Online (Sandbox Code Playgroud)
这些本地人是什么?这些方法如何运作?
我找到了Java中的clone()
方法Object
:
protected native Object clone() throws CloneNotSupportedException;
Run Code Online (Sandbox Code Playgroud)
该方法的来源是否可用?也许在OpenJDK?