Apache Thrift kod üreteci böyle bir şeye benzeyen sınıflar oluşturur. numCpus
alan null, ancak bir değer türü olarak düzenlenen beri gerçekten ayarlanmış olup olmadığını belirlemek için başka isSet
alanı bulunur:PMD kuralındaki otomatik kutuları algılamak mümkün mü?
public class TaskConfig extends TBase<TaskConfig, TaskConfig._Fields> {
private boolean isSetNumCpus; // Actual implemntation is a bitfield.
private double numCpus;
public boolean isSetNumCpus() {
return isSetNumCpus;
}
public double getNumCpus() {
return numCpus;
}
public void setNumCpus(double numCpus) {
this.numCpus = numCpus;
this.isSetNumCpus = true;
}
// hashCode, equals, copy constructor, field enum etc. omitted
}
Bizim stil kılavuzu biz bir boş unutamam ki Opsiyonel olarak null değerleri sarma tercih Kontrol. Bu yüzden bu kod biraz görmek yaygındır:
TaskConfig task = getTaskConfigFromWire();
Optional<Double> numCpus = Optional.ofNullable(task.getNumCpus());
Ancak bu doğru değildir - teşekkürler bu argümanı Autoboxing için null
olamaz ve doğru çağrı gibi görünmelidir:
TaskConfig task = getTaskConfigFromWire();
Optional<Double> numCpus = task.isSetNumCpus()
? Optional.of(task.getNumCpus())
: Optional.<Double>empty();
orada mı Bu çağrıyı yakalayan bir PMD kuralı yazma yolu (Optional.ofNullable
otomatik kutu olacak bir değer türü ile çağrılır)?