Geek_225244
这段代码没有版权和授权信息,建议在代码头部添加版权和授权信息
B
这段代码的构造方法和实例方法没有注释,建议给每个方法都添加注释
C
这段代码的 toString(),hashCode(),equals() 方法是继承的方法,建议使用 Override 注解
D
getId() 的实现,直接返回了可以修改的内部变量,这存在潜在的安全风险。为了避免不必要的安全漏洞,建议返回 sessionId.clone()
package co.ivi.codenote;
/**
* Encapsulates an session identifier.
*/
final class SessionId {
static final byte[] sessionId;
SessionId(byte[] sessionId) {
this.sessionId = sessionId.clone();
}
byte[] getId() {
return sessionId;
}
public String toString() {
// snipped
}
public int hashCode() {
// snipped
}
public boolean equals() {
// snipper
}
}
您好,对第四个选项有疑问: static final byte[] sessionId;不是有final关键字了吗?getId()返回可以修改的内部变量,这个没明白。还有就是考试题中的 这种写法static fina会提示没有初始化,l编译器会报错的。是不是多写了个final关键字。
作者回复: final关键词没有问题,有问题的是static关键字使用不恰当。sessionId声明为final, 只是表明sessionId的值不能更改,但是sessionId指向的数组还是可以修改的。请参考第34篇。