Где создать экземпляр объекта? - PullRequest
0 голосов
/ 28 марта 2020

У меня есть абстрактный класс Products с двумя подклассами Mouse, Keyboard.

Мой обработчик файлов читает атрибуты из базы данных и определяет, какой объект мы хотим создать.

Подклассы сначала вызывают суперкласс для обработки методов проверки, общих для mouse и keyboard, затем подкласс обрабатывает уникальную проверку. Я надеюсь, что так или иначе, код продолжается после вызова super() в подклассах?

Потенциальная проблема, с которой я сталкиваюсь, заключается в том, что мне нужно объявить и создать экземпляр объекта в моем классе обработчика файлов, который я предположим, что это не идеально, так как я хотел бы создать экземпляр объекта в подклассах mouse или keyboard, но Java хочет, чтобы я провоцировал внутри обработчика файла вызов Mouse(String attribute1, ...)

abstract class Products
{
    protected String barcode;
    protected String brand;
    protected boolean wireless;
    protected int quantity;
    protected double originalCost;
    protected double retailCost;

    //Setters that are common to both mouse and keyboard objects
    protected Products(String barcode, String brand, String wireless, String quantity, String originalCost, String retailCost)
    {
        //set barcode
        if(barcode.length() == 6 && barcode.matches("^[0-9]*$"))
        {
            this.barcode = barcode;
        }

        else
        {
            System.out.println("Invalid barcode attribute");
        }

       //ect ect for other attributes
}
public class Keyboard extends Products
{
    String productType;
    String layoutType;

    public Keyboard(String barcode, String brand, String wireless, String quantity, String originalCost, String retailCost, String productType, String layoutType)
    {
        //call super
        super(barcode, brand, wireless, quantity, originalCost, retailCost);

        //validate productType and assign values ect ect    
    }
}
    public void readFile()
    {
        while(x.hasNext())
        {
            String barcode = x.next();
            String name = x.next();
            String type = x.next();
            String brand = x.next();
            String colour = x.next();
            String connectivity = x.next();
            String quantity = x.next();
            String originalCost =  x.next();
            String retailCost = x.next();
            String additionalInfo =  x.next();

            switch(name)
            {
            case "keyboard":
                Keyboard(barcode, brand, connectivity, quantity, originalCost, retailCost, type, additionalInfo);
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...