Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

235
Visualizações
¿Por qué javac no produce una advertencia cuando se usa un constructor en desuso de un tipo parametrizado?

Supongamos que tiene una clase parametrizada con un constructor en desuso y una clase User que llama a este constructor. En el siguiente ejemplo, usando el operador de diamante, javac (versión 11.0.11) no produce una advertencia de obsolescencia:

 class DepTester<T> { T t; @Deprecated public DepTester(T t) { this.t = t; } } class User { DepTester<String> tester = new DepTester<>("This does not produce a warning!"); }

Sin embargo, con un argumento de tipo explícito en la llamada al constructor, se emite la advertencia:

 class User { DepTester<String> tester = new DepTester<String>("This produces a warning."); } [WARNING] DepTester.java:[17,40] DepTester(T) in com.foo.DepTester has been deprecated

El argumento de tipo explícito normalmente no se incluye, sobre lo cual la inspección de IntelliJ también advierte:

Argumento de tipo explícito La cadena se puede reemplazar con <>

No puedo encontrar una explicación para este comportamiento en la especificación del lenguaje Java . Probé con javac 17, y produce una advertencia en ambos casos, ¿es esto un error en javac 11?

EDITAR: A mi informe de errores para Oracle se le asignó un ID en la base de datos de errores de Java: JDK-8281107

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Encontró el error JDK-8257037 , "No hay advertencia de javac al llamar al constructor obsoleto con diamante":

No se emite ninguna advertencia de desaprobación cuando se compila una clase que llama a un constructor obsoleto cuando se usa la sintaxis de diamante para especificar los tipos genéricos. Se emite una advertencia de desaprobación cuando se llama al mismo constructor usando un argumento de tipo explícito o un tipo sin procesar.

Se ha solucionado con JDK 17.
También hay un backport informado para JDK 16 , pero ninguno para versiones anteriores.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda