import java.time.LocalDateTime; public enum PackageFactory { Book { public PackageInfo getInstance(String name, String notes, double price, double weight, boolean delivered, LocalDateTime expectedDate, String author) { return new BookPackage(name, notes, price, weight, delivered, expectedDate, author); } } Perishable { public PackageInfo getInstance (String name, String notes,double price, double weight, boolean delivered, LocalDateTime expectedDate, LocalDateTime expiryDate){ return new PerishablePackage(name, notes, price, weight, delivered, expectedDate, expiryDate); } } Electronic{ public PackageInfo getInstance(String name, String notes, double price, double weight, boolean delivered, LocalDateTime expectedDate, double handlingFee){ return new ElectronicPackage(name, notes, price, weight, delivered, expectedDate, handlingFee); } } } //public static PackageInfo getInstance(PackageType type, String name, String notes, double price, double weight, boolean delivered, LocalDateTime expectedDate, @Nullable String author, @Nullable LocalDateTime expiryDate, @Nullable double handlingFee){ //}