Overloading java

Fazer overloading de um método por mais de 12 vezes causa o erro memory deadlock. Argumente a afirmação.

Baseado no que eu entendi da sua afirmação eu escrevi o código abaixo.

import java.io.File;
import java.net.URI;
import java.nio.file.Path;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Stream;

public class Main {
  public static void main(String... args) {
    testando("aaa");
    testando(1);
    testando(2d);
    testando(3f);
    testando(4L);
    testando((byte) 5);
    testando((short) 6);
    testando(true);
    testando('a');
    testando(List.of());
    testando(Map.of());
    testando(Set.of());
    testando(Stream.of());
    testando(Path.of(""));
    testando(URI.create(""));
    testando(new Main());
    testando(new File(""));
    testando(new Exception());
    testando(new Error());
    testando();
  } // @formatter:off

  private static void testando(short x)     { System.out.println(x); }
  private static void testando(byte x)      { System.out.println(x); }
  private static void testando(int x)       { System.out.println(x); }
  private static void testando(float x)     { System.out.println(x); }
  private static void testando(long x)      { System.out.println(x); }
  private static void testando(double x)    { System.out.println(x); }
  private static void testando(boolean x)   { System.out.println(x); }
  private static void testando(char x)      { System.out.println(x); }
  private static void testando(String x)    { System.out.println(x); }
  private static void testando(List<?> x)   { System.out.println(x); }
  private static void testando(Map<?, ?> x) { System.out.println(x); }
  private static void testando(Set<?> x)    { System.out.println(x); }
  private static void testando(Stream<?> x) { System.out.println(x); }
  private static void testando(Main x)      { System.out.println(x); }
  private static void testando(Path x)      { System.out.println(x); }
  private static void testando(File x)      { System.out.println(x); }
  private static void testando(URI x)       { System.out.println(x); }
  private static void testando(Exception x) { System.out.println(x); }
  private static void testando(Error x)     { System.out.println(x); }
  private static void testando()            { System.out.println("hello"); }
}

O método testando tem 20 sobrecargas. Usei Java 11 e tudo funcionou perfeitamente.

Então parece que a afirmação é falsa.

Qual código você usou para testar? Se puder dar mais informação seria bom.

Foi uma pergunta que saiu no teste da minha cidade

Que pergunta estranha.

Deadlock, pelo que entendo, é o tipo de problema que pode ocorrer quando vc trabalha com múltiplas threads. Olha essa resposta que interessante:

E olha o vídeo abaixo, a partir do instante 15:26 ele explica o que é deadlock.

Tem certeza que a pergunta foi exatamente essa? Pois ela não faz o menor sentido…

Sim foi essa. Talvez seja q ele se referiu a algum computador com pouca threads… Por isso limitou por 12

Mas overloading não tem nenhuma relação com deadlock.

Overloading é quando você tem métodos de mesmo nome mas com parâmetros diferentes.

Deadlock é quando você tem dois processos concorrentes “travados” pois um está esperando pela conclusão do outro.

Se a pergunta foi somente aquela frase, sem nenhum outro contexto adicional, então ela não faz o menor sentido. A quantidade de threads da máquina e o deadlock não tem nada a ver com a quantidade de overloadings de um método…

1 curtida