Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

273
Vistas
¿No se puede sobrecargar el método?

Tengo dos métodos que hacen algo muy similar: recibe un mapa y luego lo imprime en un archivo de salida, excepto que reciben diferentes tipos de datos del mapa y Java (IntelliJ, de hecho) no me permite sobrecargarlo y dice 'parse(Map<String, Long>)' clashes with 'parse(Map<Set<String>, Integer>)'; both methods have same erasure .

Método A:

 private static void parse(Map<String, Long> map) { PrintWriter output = null; try { output = new PrintWriter("output1.csv"); } catch (FileNotFoundException e) { e.printStackTrace(); } assert output != null; map.entrySet().forEach(output::println); output.close(); }

Método B:

 private static void parse(Map<Set<String>, Integer> map) { PrintWriter output = null; try { output = new PrintWriter("output2.csv"); } catch (FileNotFoundException e) { e.printStackTrace(); } assert output != null; map.entrySet().forEach(output::println); output.close(); }

Siempre podría hacerlos dos métodos diferentes con nombres diferentes, pero eso haría que mi código se viera innecesariamente largo y torcido, así que estoy tratando de evitarlo.

¿Qué estoy haciendo mal aquí? Por favor iluminame.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

eso se debe al tipo de cosa de borrado en Java. básicamente, después de la compilación, su código se verá así

 private static void parse(Map map) { } private static void parse(Map map) { }

mirando el código. ¿Por qué no simplemente hacer la firma del método de esta manera?

 private static void parse(Map<?, ?> map, String fileName) { }

de esa manera, también evitaría una sobrecarga innecesaria.

over 4 years ago · Santiago Trujillo Denunciar

0

Puede sobrecargar un método con DIFERENTES parámetros, diferente número de parámetros de diferentes tipos de parámetros. En su código de ejemplo, Java verá ambos métodos como iguales, ya que tienen el mismo parámetro de entrada, que es Map, puede agregar otro parámetro en uno de estos métodos para que funcionen.

over 4 years ago · Santiago Trujillo Denunciar

0

Sí tu puedes. Todos son iguales, además, la declaración única en la que usa el parámetro es map.entrySet(), que es https://docs.oracle.com/javase/8/docs/api/java/util/Map.html# conjunto de entrada--

Entonces solo tiene que usar el Mapa de interfaz <V, K>, aquí hay un ejemplo de cómo implementar generis en Map Generic Map Parameter java

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda