0
我在使用協議緩衝區2.6.1和Java 1.7.0.71。編譯java類協議緩衝區有編譯時錯誤
和編譯好的簡單測試協議緩衝文件。
option java_package = "my.sample";
option java_outer_classname = "Sum";
option java_generic_services = true;
option java_generate_equals_and_hash = true;
option optimize_for = SPEED;
message SumRequest {
required string family = 1;
required string column = 2;
}
message SumResponse {
required int64 sum = 1 [default = 0];
}
service SumService {
rpc getSum(SumRequest)
returns (SumResponse);
}
但在下面的代碼,memoizedHashCode是無處申報,所以它拋出編譯錯誤。
@java.lang.Override
public int hashCode() {
if (memoizedHashCode != 0) {
return memoizedHashCode;
}
int hash = 41;
hash = (19 * hash) + getDescriptorForType().hashCode();
if (hasFamily()) {
hash = (37 * hash) + FAMILY_FIELD_NUMBER;
hash = (53 * hash) + getFamily().hashCode();
}
if (hasColumn()) {
hash = (37 * hash) + COLUMN_FIELD_NUMBER;
hash = (53 * hash) + getColumn().hashCode();
}
hash = (29 * hash) + getUnknownFields().hashCode();
memoizedHashCode = hash;
return hash;
}
我在網上看到,添加
private int memoizedHashCode = 0
解決了這個問題,但是這是我認爲只是解決方法。
這是怎麼發生的?