2013-06-06 7 views
6

Ho una classe Cage:Tipo non elaborato. I riferimenti a tipi generici dovrebbero essere parametrizzati

public class Cage<T extends Animal> { 
// the construtor takes in an integer as an explicit parameter 
... 
} 

Sto cercando di un'istanza di un oggetto di Cage in un'altra classe principale metodo:

private Cage cage5 = new Cage(5); 

ottengo l'errore: Cage è un tipo grezzo. I riferimenti al tipo generico Cage devono essere parametrizzati. Ho provato diverse idee, ma sono bloccato su questa sintassi difficile: o (

+0

possibile duplicato di [Classe è un tipo non elaborato. I riferimenti al tipo generico Classe devono essere parametrizzati] (http://stackoverflow.com/questions/1372595/class-is-a-raw-type-references-to-generic-type-classt-should-be-parameterized) – wchargin

+3

Si prega di non modificare la tua domanda per invalidare le risposte. Se hai un nuovo problema, apri una nuova domanda. Dal momento che hai rimosso la domanda originale e l'hai sostituita con una nuova, la mia risposta non ha più senso. Ho ribaltato la domanda. – cdhowie

+0

Siamo spiacenti, aprirò una nuova domanda. – LanneR

risposta

14

Cage<T> è un tipo generico, quindi è necessario specificare un parametro di tipo, in questo modo (supponendo che ci sia una class Dog extends Animal):

private Cage<Dog> cage5 = new Cage<Dog>(5); 

È possibile utilizzare qualsiasi tipo che si estende Animal (o anche Animal stesso).

Se si omette il parametro di tipo allora che cosa si finisce con in questo caso è essenzialmente Cage<Animal>. Tuttavia, si dovrebbe comunque dichiarare in modo esplicito il parametro di tipo anche se questo è quello che vuoi.

+0

Grazie cdhowie. Mi dispiace, ho avuto diverse diff che stavo provando. Sto avendo un errore più testardo modificato ora. Grazie per il tuo contributo! – LanneR

Problemi correlati