Как вернуть переменную, не зная её типа?

Знаю, что многим это будет странным, но я хотел усовершенствовать ввод от пользователя, но столкнулся с проблемой: при создании 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);
}
→ Ссылка
Автор решения: Artur Vartanyan

В данном случае Вам на помощь приходят Дженерики. Честно, говоря, тема для начинающего достаточно сложная, так как включает в себя как часть тем с ООП(наследование, полиморфизм), так и более сложную работу с методами и типами данных. Но понять фундаментальные вещи я думаю можно.

В вашем случае можно использовать что-то подобное:

public <T> T yourMethod(T yourObject) {
       return (T) yourObject;
}

Буквой T мы как бы обобщаем тип, говорим, что метод универсален для нескольких типов данных. Более подробно я советую почитать по темам:

  1. Наследование
  2. Полиморфизм
  3. Типы методов(void / return)
  4. Параметрический полиморфизм
  5. Generic methods(Дженерик методы)
→ Ссылка