「java不变」JAVA不变式是什么
今天给各位分享java不变的知识,其中也会对JAVA不变式是什么进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
java中开启子线程后主线程中传入的变量不变
使用回调,变量改变。
在主线程中对类C的实变量进行设置,然后输出变量开启子线程,通过构造函数传入变量,在子线程中改变变量的值子线程中调用主线程的静态方法传递数据给主线程说明子线程执行结束子线程结束后在主线程中查看变量已经发生改变。
每个线程都有一个唯一标示符,来区分线程中的主次关系的说法, 线程唯一标示符,Thread.CurrentThread.ManagedThreadID。
java不可变类有哪些
java不可变类是fina的,常用的有以下几种:
String
public final class Stringextends Object implements Serializable, ComparableString, CharSequence
Integer (以及其它基本类型的包装类)
public final class Integer extends Numberimplements ComparableInteger
java不变类是在创建该类实列后它的属性不可被改变,那只把它的属性全部用final修饰不就行了
如果使用final修改的话,它的初始值只能在第一次创建时被赋上值,比如构造函数。一但使用new创建实例后就不能再赋值了。但是有时候我们在使用的过程中,并不是一开始就给所有的属性赋值的,而且有时候属性非常多,做一个多属性的构造函数也不利于维护。所以,一般要用到不变类的时候,我们使用builder类,它只有get方法,没有set方法:例如:
public class DoDoContact {
private final int age;
private final int safeID;
private final String name;
private final String address;
public int getAge() {
return age;
}
public int getSafeID() {
return safeID;
}
public String getName() {
return name;
}
public String getAddress() {
return address;
}
public static class Builder {
private int age = 0;
private int safeID = 0;
private String name = null;
private String address = null;
// 构建的步骤
public Builder(String name) {
this.name = name;
}
public Builder age(int val) {
age = val;
return this;
}
public Builder safeID(int val) {
safeID = val;
return this;
}
public Builder address(String val) {
address = val;
return this;
}
public DoDoContact build() { // 构建,返回一个新对象
return new DoDoContact(this);
}
}
private DoDoContact(Builder b) {
age = b.age;
safeID = b.safeID;
name = b.name;
address = b.address;
}
}
最终,客户程序可以很灵活的去构建这个对象。
1
2
3
4
DoDoContact ddc = new DoDoContact.Builder("Ace").age(10)
.address("beijing").build();
System.out.println("name=" + ddc.getName() + "age =" + ddc.getAge()
+ "address" + ddc.getAddress());
关于java不变和JAVA不变式是什么的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。