tox1cozZ
aka Agravaine
- 8,456
- 598
- 2,893
Приходится писать много одинакового кода аля:
Решил вынести это в отдельный метод:
Ну и юзаю вот так:
Только вот 'tab' имеет тип GuiTab, приходится постоянно кастить к нужному типу.
Вопрос: можно ли как-то сделать так, чтобы 'tab' был типа передаваемого класса(GuiTabAllReports.class)?
Java:
if(mc.currentScreen instanceof GuiSocialNetwork){
GuiSocialNetwork gui = (GuiSocialNetwork)mc.currentScreen;
Optional<GuiTab> currentTab = gui.getCurrentTab();
currentTab.ifPresent(tab -> {
if(tab instanceof GuiTabAllReports){
GuiTabAllReports reportsTab = (GuiTabAllReports)tab;
// ...
}
});
}
Код:
public static void onTab(Minecraft mc, Class<? extends GuiTab> tabClass, Consumer<? super GuiTab> consumer){
if(mc.currentScreen instanceof GuiSocialNetwork){
GuiSocialNetwork gui = (GuiSocialNetwork)mc.currentScreen;
Optional<? extends GuiTab> currentTab = gui.getCurrentTab();
currentTab.ifPresent(tab -> {
if(tabClass.isAssignableFrom(tab.getClass())){
consumer.accept(tab);
}
});
}
}
Код:
GuiSocialNetwork.onTab(mc, GuiTabAllReports.class, tab -> {
GuiTabAllReports reports = (GuiTabAllReports)tab;
});
Вопрос: можно ли как-то сделать так, чтобы 'tab' был типа передаваемого класса(GuiTabAllReports.class)?