InformáticaProgramació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 obj = new Par (). Débese notar que en vez de T pode especificar calquera carta, pero, como norma xeral, use T, V é E.

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 obj = new 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 obj = novo par <> (novo enteiro (1), nova Enteiro (2)). O mesmo se aplica aos argumentos e métodos setFirst setSecond. E, como xa debería ter difícil de adiviñar, métodos GetFirst GetSecond e pode voltar un valor do tipo Enteiros.

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 obj.

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 obj1 e Par obj2. En consecuencia, de acordo obj1 = obj2 un erro. Aínda que ambas as variables son do tipo Par , os obxectos a que se refiren, son diferentes. Este é un excelente exemplo dos tipos de seguridade en Java xenérico.

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 obj. Con todo, esta limitación non é un problema grave, xa que hai unha clase de invólucro Java correspondente a cada tipo primitivo. Estrictamente falando, o par clase que quere encapsular un enteiro e booleano valor avtoupakovka fai todo para ti: Par obj = new Par <> (25, True).

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 . Deste xeito, o compilador comprobar que, no canto do parámetro T tamén pode ser substituído ou clase Número ou unha das súas subclases.

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 . Aquí, nós dicimos ao compilador que o tipo T pode ser arbitraria, e tipo V debe ser do tipo T ou unha das súas subclases.

Limitar o "bottom" é exactamente do mesmo xeito, pero en vez da palabra esténdese para deletrear a palabra super. Esta clase é clasificada Par di que en vez de T pode ser substituído ou un ArrayList, ou calquera clase ou interface que herda.

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

 

 

 

 

Newest

Copyright © 2018 gl.delachieve.com. Theme powered by WordPress.