我“读过enter link description here匿名类在Java中获得最终变量的浅层还是深层拷贝?
,看到一个匿名类获取外部类变量的执行上下文的副本,没有我在哪里可以找到,如果匿名类得到一个浅拷贝或深拷贝最终变量。我试图做使用 使用一些Android的代码测试,但它可以是任何Java平台我想测试:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = (TextView)findViewById(R.id.tv);
final List<String> jason = new ArrayList<>();
jason.add("my first string");
tv.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Log.v("mytag",jason.get(0));
}
});
jason.clear();
jason.add("my second string");
}
}
,并在日志输出当我点击文字"my second string".
所以看来,当我从外部类改变列表确实影响了匿名类。那么我可以假设它总是会得到一个浅拷贝呢?
它得到的* *变量,而不是的(引用)变量引用对象的副本至。 –
即时通讯不清楚,有人可能会发布一个例子可能使用我的例子。 – j2emanue
你对变量和对象之间的区别感到满意吗? –