Удалить избыточный синглтон в Java [дубликат] ⇐ JAVA
Удалить избыточный синглтон в Java [дубликат]
вот мой полный код 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
вот мой полный код 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
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Уменьшите избыточный код для оптимизации граничных кубов в проекте Unity C#
Anonymous » » в форуме C# - 0 Ответы
- 19 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Уменьшите избыточный код для оптимизации граничных кубов в проекте Unity C#
Anonymous » » в форуме C# - 0 Ответы
- 19 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Уменьшите избыточный код для оптимизации граничных кубов в проекте Unity C#
Anonymous » » в форуме C# - 0 Ответы
- 20 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Избыточный/более производительный код против оптимизированного/менее производительного кода
Anonymous » » в форуме JAVA - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Избыточный/более производительный код против оптимизированного/менее производительного кода
Anonymous » » в форуме C# - 0 Ответы
- 24 Просмотры
-
Последнее сообщение Anonymous
-