Как сделать несколько вариантов типизации в одной переменной?
Перехожу на Java с Python, но за процесс всего обучения не понял как использовать неизвестный тип данных, например как это делается в Python, где ты делаешь переменную без указания типа, и она может принять как float, так string либо integer.
а зачем вам джава, если вы не собираетесь использовать ее возможности? ну да, можно через object все делать, есть море костылей, только зачем, это будет выглядеть хуже чем в других языках.
Нет, не возможно, Java - язык со строгой типизацией.
Резервировать переменную, не зная заранее что ты туда будешь ложить - странно, а если знаешь, значит знаешь какого оно может быть типа.
Справедливости ради, всегда есть тип Object от которого унаследовано всё.
Илья, это плохой стиль, вы так делаете, потому что четко знаете что вы хотите в будущем использовать результат этой переменной только для вывода в консоль. Но если потом, при развитии проекта вы захотите делать вычисления с результатом, то возможность наличия в нем строки будет вам мешать, вам прийдется это проверять дополнительно.
Изучаете Java - изучайте, но не пытайтесь натянуть на нее Pyton.
Илья, формально, в Java есть оператор instanceof, позволяющий проверить тип данных. Но он не работает с примитивами и работает только "вверх" по иерархии типов:
Т.е. проверить произвольный тип не получится, ты в любом случае должен понимать что к тебе прилетает. В целом, если у тебя возникает такая проблема, значит ты неправильно формулируешь задачу. Если ты скажешь что именно ты хочешь, тебе подскажут как этого достичь. К примеру, если ты хочешь валидировать ввод с клавиатуры:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int result = 0; // хотим ввести с клавиатуры целое число
boolean correct = false;
System.out.println("Введите целое число");
while (!correct) {
try {
String inp = sc.nextLine(); // вводим строку с клавиатуры
result = Integer.parseInt(inp); // пытаемся преобразовать её к целому числу
correct = true; // если удалось
} catch (NumberFormatException e) { // если не удалось
System.out.println("Неправильный ввод, введите заново");
}
}
System.out.println("Результат: " + result);
}
Не считая парочки примитивных типов, все в Джаве является объектами и наследуется от класса Object. Если заранее неизвестен тип (да и плевать каким он будет, если по логике МоделМапером далее данные перекидываются в объект нужного типа), то просто указывайте в сигнатуре Object.
Или можете свой тип описать, если нужны дополнительные ограничения, свойства или методы.