24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Прохрамисты есть тут? Вот давай, без компилятора, скажи че будет выведено на экран. Три метода в классе Processor. Метод run() в классе ideone. Метод run() в main вызывается с стригом "строка". Что будет выведено на экран? Загадка.
class Ideone { static Processor processor = new Processor(); public static void main (String[] args) throws java.lang.Exception { run("строка"); }
public static void run(Object o){ processor.process(o); } }
class Processor{ public void process(String s){ System.out.println("String"); } public void process(Integer i){ System.out.println("Integer"); } public void process(Object o){ System.out.println("Object"); } }
>>212212055 А если мне надо, чтобы он умничал? Если я сразу не знаю с чем будет вызван метод run()? Там может быть число или строка. Как мне этот код переписать так, чтобы он выбирал нужный метод? Если я просто вызову метод процесс() с числом или строкой он же сможет выбрать.
>>212212744 Почему это не работает как сейчас? Если вызвать процесс со строкой, то будет все ок. В параметр передается строка. Так почему с вызовом поцесс() с параметром в котором строка он не работает как надо?
>>212217114 Ты бы не смог вызвать метод run из main, если бы он не был статическим. Тебе сначала надо было бы создать экземпляр класса в данном случае класса Ideone, который содержит этот метод.
>>212217508 Все это могло происходить вообще в другом классе, не майн. И не понадобились бы статические методы. Ну т.е.ю объект бы создал. Это что-то изменило бы?
>>212210153 (OP) Не шарю в джаве и её типизации и т.д. В метод run подаётся object, если в джаве, как, например, в шарпах, обджект является метатипом, порождающим все другие типы, то призове метода run("строка") литерал будет неявно преобразован в обджект.
class Ideone
{
static Processor processor = new Processor();
public static void main (String[] args) throws java.lang.Exception
{
run("строка");
}
public static void run(Object o){
processor.process(o);
}
}
class Processor{
public void process(String s){
System.out.println("String");
}
public void process(Integer i){
System.out.println("Integer");
}
public void process(Object o){
System.out.println("Object");
}
}