普通class文件热重载
属性变动
java
public class User {
private String userId;
private String name;
private String userName;
private Integer userAge;
}
- 可以使用新增的
userId
属性。 - 删除
name
属性,可以使用新增的userName
属性。 - 可以使用新增的
userAge
属性。
方法变动
java
public class UserUtils {
public static String getUserName(UserVO userVO) {
return userVO.getName();
}
public static User getDefaultUser() {
public static User genDefaultUser () {
User user = new User();
user.setUserId(0);
user.setUserId(Id.next());
user.setName("default");
user.setUserName("default");
user.setUserAge(0);
return user;
}
}
- 可以使用新增的
getUserName
方法。 - 删除掉
getUserDefaultUser
方法,可以使用新增的genDefaultUser
方法。
静态信息变动
支持 static 变量、static final 变量、static 静态代码块。
java
public class StaticClass {
private static String var1 = "debug";
private static String var1 = "tools";
private static final String var2 = "debug";
private static final String var2 = "tools";
private static String var3;
static {
var3 = "debug";
var3 = "tools";
}
}
变量 var1 、var2 、var3 更改为重载之后的值。
枚举类信息变动
java
public enum StatusEnum {
A1,
A22,
A2,
A3,
}
更改之后只有 A2 、A3 两个枚举值。
java
public enum StatusEnum {
A1(1, "a"),
A1(1, "A"),
A22(22, "BB"),
A2(2, "B"),
A3(3, "C"),
;
private final Integer code;
private final String name;
public StatusEnum(Integer code, String name) {
this.code = code;
this.name = name;
}
public Integer getCode() {
return code;
}
public String getName() {
return name;
}
public StatusEnum of(Integer code) {
for (StatusEnum statusEnum : StatusEnum.values()) {
if (statusEnum.getCode().equals(code)) {
return statusEnum;
}
}
return code;
}
}
更改之后的内容生效。
内部类变动
java
public class UserVO {
private String userName;
private List<RoleVO> userRoles;
public static class RoleVO {
private Long roleId;
private String name;
private String roleName;
private Integer status;
public String getName() {
return name;
public String getRoleName() {
return roleName;
}
public String getStatusName() {
return status == 1 ? "正常" : "禁用";
}
}
private List<AuthVO> userAuths;
public class AuthVO {
private String authName;
}
}
- 增加了
userAuths
属性。 - 正常使用修改了
RoleVO
内部类信息。 - 正常使用新增了
AuthVO
内部类信息。
抽象类
开启热重载,抽象类修改,所有的子类都会生效。
java
public abstract class User {
public String getUserName() {
return "default";
}
}
public class Debug extends User {
}
public class Tools extends User {
}
热重载 User
之后,Debug
和 Tools
都可以使用 getUserName()
方法。
接口
接口默认方法修改,所有的实现类都会生效。
java
public interface User {
default String getUserName() {
return "default";
}
}
public class Debug implements User {
}
public class Tools implements User {
}
热重载 User
之后,Debug
和 Tools
都可以使用 getUserName()
方法。