Я не смог найти это, хотя в настоящее время у меня есть сценарий использования, где у меня есть универсальный тип, который имеет метод foo(int)
и метод foo(T)
.Для моего варианта использования указанный тип создается с помощью T = Integer, что означает, что у меня есть методы foo(int)
и foo(Integer)
.Всякий раз, когда я пытаюсь вызвать foo(Integer)
, вместо этого он вызывает foo(int)
, независимо от того, указан ли тип, независимо от того, произнесу я или нет.Единственное, что его решает, - это использование Long, чего я не хочу делать.
Есть ли способ заставить java использовать метод foo(Integer)
?
Edit:
На этот раз, чтобы ответить на комментарий, я не думаю, что здесь уместен код, поскольку то, что я описал, было достаточно формализуемым, чтобы понять, что я имел в виду.Во-вторых, ошибка была на моем конце, прошу прощения.У меня не было ожидаемого поведения, и я подумал, что это произойдет из-за проблемы в этом отношении, тем более что в моей IDE отображалось использование метода foo(int)
.Я закрою это сейчас
MVCE:
Main.java
package sample;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root, 300, 275));
primaryStage.show();
}
public static void main(String[] args) {
launch(Main,args);
}
}
Controller.java
package sample;
import javafx.collections.FXCollections;
import javafx.fxml.Initializable;
import javafx.scene.control.ListView;
public class Controller implements Initializable {
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
ListView<Integer> listView = new ListView<>();
listView.setItems(FXCollections.observableArrayList(1, 5, 8, 13));
Integer t = 5;
listView.getSelectionModel().select(t);
System.out.println(listView.getSelectionModel().getSelectedItems());
}
}
sample.fxml
<?import javafx.geometry.Insets?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<GridPane fx:controller="sample.Controller"
xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10">
</GridPane>
Вы заметите, что этот код работает, как и ожидалось, но теперь я понял, что я использую не Java, а скорее Groovy - переключение окончаний файлов на Groovy и компиляция с помощью Groovy компилятораэта программа имеет мое описанное поведение, что означает, что проблема связана с govy, а не с java.