Как вернуть переменную, не зная её типа?
Знаю, что многим это будет странным, но я хотел усовершенствовать ввод от пользователя, но столкнулся с проблемой: при создании static void input() я не знаю что передавать туда, ведь input должен получать любой тип данных, но что тогда вводить в скобки? Я же не могу всё конвертировать строку и потом работать с ним как с числом. И самое главное что делать с void? Я ведь должен знать, какой тип данных должен возращать. Неужели писать для каждого типа данных новый input?
К примеру:
input(123,"int"); или input("Text","String");. Или можно тут замешать перезагрузку методов?
Ответы (2 шт):
Видимо, вам нужно что-то вроде этого
public static void main (String[] args) throws java.lang.Exception
{
input(123);
input("text");
}
static <T> void input(T val) {
System.out.println(val);
}
В данном случае Вам на помощь приходят Дженерики. Честно, говоря, тема для начинающего достаточно сложная, так как включает в себя как часть тем с ООП(наследование, полиморфизм), так и более сложную работу с методами и типами данных. Но понять фундаментальные вещи я думаю можно.
В вашем случае можно использовать что-то подобное:
public <T> T yourMethod(T yourObject) {
return (T) yourObject;
}
Буквой T мы как бы обобщаем тип, говорим, что метод универсален для нескольких типов данных.
Более подробно я советую почитать по темам:
- Наследование
- Полиморфизм
- Типы методов(void / return)
- Параметрический полиморфизм
- Generic methods(Дженерик методы)