• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

230
Vistas
¿Cómo funciona un valor en una función genérica en Java?

Obteniendo error: tipos incompatibles: int no se puede convertir a T. Quiero crear una cola usando una lista vinculada que pueda almacenar elementos de diferentes tipos de datos. Sugiera formas de cómo puedo pasar valores que pertenecen a diferentes tipos de datos a la función genérica add().

 public void main(String args[]) { MyQueue<T> q=new MyQueue<T>(); q.add(10); q.add("Hello"); } public void add(T item) { QueueNode<T> t=new QueueNode<T>(item); if(last!=null) { last.next=t; } last=t; }
about 3 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

T es un marcador de posición para un Tipo, pero no puede declarar T de esta manera ya que T debe ser un tipo conocido. Quieres algo como esto. Aquí T es un tipo conocido que se pasa a QueueNode y MyQueue .

 package com.company; import java.util.ArrayList; import java.util.List; class QueueNode<T> { private T nodeVal; T getNodeVal() { return nodeVal; } void setNodeVal(T nodeVal) { this.nodeVal = nodeVal; } QueueNode(T nodeVal) { this.nodeVal = nodeVal; } } class MyQueue<T> { private List<QueueNode<T>> actualQueue = new ArrayList<QueueNode<T>>(); public List<QueueNode<T>> getActualQueue() { return actualQueue; } public void enqueue(T t) { actualQueue.add(new QueueNode<>(t)); } public QueueNode<T> dequeue() { return actualQueue.remove(0); } } class Main { public static void main(String[] args) { MyQueue<Integer> integerQueue = new MyQueue<Integer>(); integerQueue.enqueue(1); integerQueue.enqueue(2); integerQueue.enqueue(3); integerQueue.getActualQueue().forEach(e -> System.out.print(e.getNodeVal() + " ")); //prints 1 2 3 System.out.println(); integerQueue.dequeue(); integerQueue.getActualQueue().forEach(e -> System.out.print(e.getNodeVal() + " ")); //prints 2 3 System.out.println(); integerQueue.dequeue(); integerQueue.getActualQueue().forEach(e -> System.out.print(e.getNodeVal() + " ")); //prints 3 System.out.println(); } }
about 3 years ago · Santiago Trujillo Denunciar

0

Deberías cambiar de T por Object . De esta manera, puede colocar cualquier tipo de datos que desee y luego puede usar un foreach, por ejemplo:

 public static void main(String args[]) { Queue<Object> queues=new LinkedList<>(); queues.add(10); queues.add("Hello"); for(Object queue:queues){ System.out.println(queue); } }

La clase Genérica da una solución más grande.

También considere que int es un tipo de datos primitivo y no es una clase. En este caso, Integer es la clase que usa int .

about 3 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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda