Как уже упоминали многие, лучше всего сделать так, чтобы Supplier
и DeliveryCompany
реализовали интерфейс комментариев или расширили общий базовый класс.
Если вы действительно не можете этого сделать, и действительно имеете чтобы избежать дублирования в ваших блоках, и действительно, если ваш реальный код более сложен, чем тот, который вы опубликовали, вы можете сделать так, чтобы ваши блоки совместно использовали переменную
Использование локального класса для хранения данных
public void populateSupplyChainTextFields() {
class Holder {
String category, price, unitCost;
Holder(String category, double price, double unitCost){
this.category = category;
this.price = String.valueOf(price);
this.unitCost = String.valueOf(unitCost);
}
}
Holder data;
if (jDeliveryCheckBox.isSelected()) {
DeliveryCompany supplyChainMember = new DeliveryCompany().Find(jSupplyChainSearchBox.getSelectedItem().toString());
data = new Holder(supplyChainMember.getCategory(), supplyChainMember.getPrice(), supplyChainMember.getUnitCost());
} else {
Supplier supplyChainMember = new Supplier().Find(jSupplyChainSearchBox.getSelectedItem().toString());
data = new Holder(supplyChainMember.getCategory(), supplyChainMember.getPrice(), supplyChainMember.getUnitCost());
}
jCategoryTextField.setText(data.category);
jPriceTextField.setText(data.price);
jUnitCostTextField.setText(data.unitCost);
Использование локального класса - это только мои предпочтения, вместо этого вы можете использовать что-то вроде карты (конечно, записи будут очень полезны):
Map<String, String> data;
if (jDeliveryCheckBox.isSelected()) {
DeliveryCompany supplyChainMember = ...
data = Map.of("category, supplyChainMember.getCategory(),
"price", String.valueOf(supplyChainMember.getPrice()),
"unitCost", String.valueOf(supplyChainMember.getUnitCost()));
} else {
Supplier supplyChainMember = ...
data = Map.of("category, supplyChainMember.getCategory(),
"price", String.valueOf(supplyChainMember.getPrice()),
"unitCost", String.valueOf(supplyChainMember.getUnitCost()));
}
jCategoryTextField.setText(data.get("category"));
jPriceTextField.setText(data.get("price"));
jUnitCostTextField.setText(data.get("unitCost"));