Informática, Programación
Java generics: descrición e métodos
Comezando coa aparición da linguaxe Java sufriu unha serie de cambios, que trouxo, sen dúbida, momentos positivos na súa función. Unha desas mudanzas significativas é a introdución de Java xenérico ou xeneralizacións. Esta función non só facer a linguaxe máis flexible e versátil, pero tamén moito máis seguro en canto a traer os tipos de datos.
O feito é que antes da introdución dos xenéricos no código xenérico Java podería ser creado, non só en termos de obxecto de referencia tipo. Estas ligazóns poden ser asignados calquera obxecto. Ao final, as clases en Java son implícitos herdeiros clase de obxecto. Con todo, esta visión é unha potencial fonte de moitos erros relacionados a tipo de seguridade na aparente conversión dun obxecto do obxecto para o tipo de destino. Usando xeneralizacións todos os moldes son realizados de forma implícita e automaticamente, eliminando ata o potencial de erros.
Java generics: descrición e exemplo
Imos considerar un exemplo simple da aplicación da xeneralización das clases regulares na figura a continuación. E entón proceder a un exame detallado de todas as sutilezas e matices de Java xenérico.
Preste atención á forma en que a declaración de clase ocorre Pair. Inmediatamente despois do nome de clase, os soportes de ángulo aberto, o que indicaba a letra T. É un tipo de material de recheo, que está en proceso de creación dunha instancia desta clase serán substituídos por un tipo específico. Parece como segue: Par
Nota: empezando a oitava versión de Java, especificando o tipo de destino cando declarar corchetes referencia no constructor se pode deixar en branco. Así, o exemplo pode ser reescrita como antes: Par
Cando a clase é declarada de tal forma, a continuación, no seu corpo, en vez de tipos específicos de campos, ligazóns, obxectos obtidos polos métodos que pode usar esta letra. Unha vez que o t ao crear o obxecto de clase é substituído por un tipo particular, primeiro e segundo campos, neste caso, será do tipo números enteiros.
Seguindo a lóxica dos argumentos e firstItem secondItem, a que se refire o constructor apropiado debe ser do tipo Enteiros ou subclase. Se tentar transmitir un tipo de datos que é diferente do que foi especificado durante a creación dun obxecto, o compilador non vai deixar este erro. Así, o constructor de argumentos cando un obxecto será como segue: Par
Xeneralizada con tipos de clases de varios parámetros
Nas clases xeneralizadas Tamén pode declarar varios parámetros do tipo que son fixados en soportes angulares con comas. Redeseñado por un caso clase Par amósase a continuación.
Como verás, cando se crea unha instancia desta clase en corchetes debe indicar o mesmo número de tipos como parámetros. Se está familiarizado con este tipo de estrutura de datos como un mapa, pode ver que usa exactamente o mesmo principio. Alí, o primeiro argumento especifica o tipo de chave, eo segundo - o tipo de valor. Debe notarse que tipo de transmitido cando un obxecto argumentos poden sobrepasar-se. Por exemplo, o seguinte anuncio Par instancia de clase é absolutamente correcto: Par
Algunhas características do xeneralizacións
Antes de continuar, hai que ter en conta que o compilador Java non crear diferentes versións do Par clase. De feito, no proceso de elaboración dun tipo xeneralizado toda a información é excluído. Pola contra, trae tipo apropiados, creando unha versión especial da clase Pair. Con todo, no programa aínda hai só unha versión xenérica da clase. Este proceso é chamado en Java tipo de limpeza xeral.
Observe un punto importante. Enlaces a diferentes versións da mesma clase xenérica Java non pode ligar a un único e mesmo obxecto. É dicir, supoña que temos dous enlaces: Pares
Restricións sobre clases xenéricas
É importante saber que as xeneralizacións pode ser aplicada só para tipo de referencia, que é pasar parámetros argumento Java clase xenérica debe ser un tipo de clase. Estes tipos simples, como, por exemplo, dobres ou longas, non poden ser trasladados. Noutras palabras, a seguinte liña Par declaración de clase non está permitido: Par
Outra limitación grave é a incapacidade para crear un exemplo do tipo de parámetro. Por exemplo, a seguinte liña pode causar un erro de compilación: T primeiro = new T (). Isto é evidente, porque non sabe por adiantado Un argumento pasado unha clase chea ou abstracto, ou mesmo interface. O mesmo vale para a creación de matrices.
tipo limitados
Moitas veces hai situacións en que é necesario limitar a lista de tipos que se poden como un argumento para o Java clase xenérica. Supoñamos que, na nosa Par clase queremos encapsulado só os valores numéricos a outras operacións matemáticas sobre eles. Para iso, cómpre definir o límite superior do tipo de parámetro. Realízase por medio dunha anuncios superclasse herdados todos os argumentos pasados en corchetes. El ficará como segue: class Par
Esta é unha recepción común. Tales restricións son moitas veces utilizados para facilitar parámetros de tipo compatibilidade nunha única e mesma clase. Considere o exemplo na nosa clase Par: class Par
Limitar o "bottom" é exactamente do mesmo xeito, pero en vez da palabra esténdese para deletrear a palabra super. Esta clase é clasificada Par
métodos Java xenéricos e construtores
En Java, xeneralizacións poden non aplicarse só para as clases, senón que tamén métodos. Por exemplo, un método xenérico pode ser declarado nunha aula regular.
Como se pode ver na figura anterior, o método ad xeneralizada non é gran cousa. Suficiente antes de que o tipo de retorno dun método para poñer os corchetes e especificar os parámetros de tipo neles.
Se todo é feito de forma semellante ao constructor:
corchetes, neste caso, coloque antes do nome do deseñador, porque non ten valor de retorno. O resultado de ambos os programas serán:
enteiro
corda
Similar articles
Trending Now