Java基础-内部类中调用外部局部变量为何用final修饰

在平时写代码中经常会在方法中起一个线程,但是在局部内部类中使用外部局部变量的话编译器会提示将外部局部变量定义为final类型,这是为什么呢

1
2
3
4
5
6
7
8
9
10
11
12
13
public void test(final String a, String b){
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + ":"+a);
}
}).start();
}

Java基础-java只有值传递

Java程序设计语言总是采用按值调用。也就是说,方法得到的是所有参数值的一个拷贝,也就是说,方法不能修改传递给它的任何参数变量的内容

Java基础-Transient关键字的使用

transient的使用

对象实现了序列化接口时,这个类所有属性和方法都可以序列化和被反序列化,当我们不想序列化某些属性时,使用transient修饰这些属性即可,比如对于一些敏感信息(密码,银行卡号等)不希望在网络中传输

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×