Удалить избыточный синглтон в Java [дубликат]JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Удалить избыточный синглтон в Java [дубликат]

Сообщение Anonymous »


вот мой полный код Controller.java. Я новичок в ООП с Синглтоном. я хочу, чтобы какое-то значение наследования подкласса было в суперклассе (контроллере). Есть какие-нибудь предложения или альтернатива?

пакет com.example.compactjv; импортировать com.example.compactjv.UI.*; импортировать javafx.fxml.FXML; импортировать javafx.scene.control.*; импортировать javafx.scene.layout.AnchorPane; импортировать javafx.scene.layout.VBox; импортировать ломбок.Getter; импортировать ломбок.Setter; @Сеттер @Геттер Контроллер публичного класса { @FXML защищенная кнопка closeButton, минимизировать кнопку, compressButton, decompressButton, informationButton; @FXML защищенное текстовое поле filePathField; @FXML защищенная метка currentSizeLabel, sizeOnDiskLabel, процентная метка, cpuUsageLabel, MemoryUsageLabel, totalFolderOnFile; @FXML защищенное сжатие ChoiceBoxAlgorithmChoiceBox; @FXML защищенный ProgressBar ProgressBar; @FXML защищенная метка infoText, homeText; @FXML защищенная навигационная панель AnchorPane; @FXML защищенная кнопка hamburgerButton; @FXML защищенный диск-контейнер VBox; @FXML защищенная TextArea debugTextArea; @Getter экземпляр частного статического контроллера; защищенный файл компакт = новый файл (); защищенный окончательный ExecutorServiceManager executorServiceManager = новый ExecutorServiceManager(); общественный контроллер() { если (экземпляр == ноль) { экземпляр = это; } компактный = Controller.getInstance().getCompact(); filePathField = Controller.getInstance().getFilePathField(); currentSizeLabel = Controller.getInstance().getCurrentSizeLabel(); sizeOnDiskLabel = Controller.getInstance().getSizeOnDiskLabel(); TotalFolderOnFile = Controller.getInstance().getTotalFolderOnFile(); compressButton = Controller.getInstance().getCompressButton(); decompressButton = Controller.getInstance().getDecompressButton(); процентная метка = Controller.getInstance().getPercentageLabel(); ProgressBar = Controller.getInstance().getProgressBar(); cpuUsageLabel = Controller.getInstance().getCpuUsageLabel(); MemoryUsageLabel = Controller.getInstance().getMemoryUsageLabel(); CompressionAlgorithmChoiceBox = Controller.getInstance().getCompressionAlgorithmChoiceBox(); infoText = Controller.getInstance().getInfoText(); homeText = Controller.getInstance().getHomeText(); navbar = Controller.getInstance().getNavbar(); hamburgerButton = Controller.getInstance().getHamburgerButton(); diskContainer = Controller.getInstance().getDiskContainer(); debugTextArea = Controller.getInstance().getDebugTextArea(); closeButton = Controller.getInstance().getCloseButton(); MinimizeButton = Controller.getInstance().getMinimizeButton(); InformationButton = Controller.getInstance().getInformationButton(); } общественная недействительная инициализация () { сжатиеAlgorithmChoiceBox.setDisable(истина); процентная метка.setText(""); ProgressBar.setVisible(ложь); настройкаUI(); } частная пустота setupUI() { новый DebuggingBoxUI(); новый ButtonHandler(); новый NavbarUI(); новый WindowControlsUI(); новый ButtonUI(); новый FilePathUI(); новый DiskInformationUI(); новый CPUInformationUI(); новый MemoryInformationUI(); } } Пример: мне нужно такое наследование

пакет com.example.compactjv.UI; импортировать com.example.compactjv.Controller; импортировать com.example.compactjv.File; импортировать javafx.application.Platform; импортировать java.util.concurrent.TimeUnit; публичный класс CPUInformationUI расширяет контроллер { общественный CPUInformationUI () { супер(); setupCPUUsageLabel(); } частная пустота setupCPUUsageLabel () { Выполняемая задача = () -> { Строка cpuUsage = File.getCPUUsage(); Platform.runLater(() -> cpuUsageLabel.setText(cpuUsage + "%")); }; executorServiceManager.executePeriodicTask(задача, 0, 1, TimeUnit.SECONDS); } } Когда я хочу удалить избыточность в строке, например Контроллер.getInstance(). есть ошибка

У меня ошибка

Вызвано: java.lang.NullPointerException: невозможно вызвать «javafx.scene.control.TextArea.setFont(javafx.scene.text.Font)», поскольку «this.debugTextArea» имеет значение null Все значения подкласса имеют значение NULL.

если меня не удалит

Controller.getInstance().getCompact(); .... другой код .getInstance(). с геттером Подкласс может иметь значение FXML из Controller.class
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»