aboutsummaryrefslogtreecommitdiff
path: root/tds
diff options
context:
space:
mode:
Diffstat (limited to 'tds')
-rw-r--r--tds/n.lyx25
-rw-r--r--tds/n2.lyx3317
2 files changed, 3342 insertions, 0 deletions
diff --git a/tds/n.lyx b/tds/n.lyx
index 7687290..555ab8f 100644
--- a/tds/n.lyx
+++ b/tds/n.lyx
@@ -169,6 +169,17 @@ Cohesion (computer science), GRASP (object-oriented design), Fundamental
.
\end_layout
+\begin_layout Itemize
+Oracle (2020).
+
+\emph on
+\lang english
+Java™ Platform, Standard Edition 8 API Specification
+\emph default
+\lang spanish
+.
+\end_layout
+
\begin_layout Chapter
Principios básicos
\end_layout
@@ -196,5 +207,19 @@ filename "n1.lyx"
\end_layout
+\begin_layout Chapter
+Conceptos de Java
+\end_layout
+
+\begin_layout Standard
+\begin_inset CommandInset include
+LatexCommand input
+filename "n2.lyx"
+
+\end_inset
+
+
+\end_layout
+
\end_body
\end_document
diff --git a/tds/n2.lyx b/tds/n2.lyx
new file mode 100644
index 0000000..dbbc4bc
--- /dev/null
+++ b/tds/n2.lyx
@@ -0,0 +1,3317 @@
+#LyX 2.3 created this file. For more info see http://www.lyx.org/
+\lyxformat 544
+\begin_document
+\begin_header
+\save_transient_properties true
+\origin unavailable
+\textclass book
+\use_default_options true
+\begin_modules
+algorithm2e
+\end_modules
+\maintain_unincluded_children false
+\language spanish
+\language_package default
+\inputencoding auto
+\fontencoding global
+\font_roman "default" "default"
+\font_sans "default" "default"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
+\font_default_family default
+\use_non_tex_fonts false
+\font_sc false
+\font_osf false
+\font_sf_scale 100 100
+\font_tt_scale 100 100
+\use_microtype false
+\use_dash_ligatures true
+\graphics default
+\default_output_format default
+\output_sync 0
+\bibtex_command default
+\index_command default
+\paperfontsize default
+\spacing single
+\use_hyperref false
+\papersize default
+\use_geometry false
+\use_package amsmath 1
+\use_package amssymb 1
+\use_package cancel 1
+\use_package esint 1
+\use_package mathdots 1
+\use_package mathtools 1
+\use_package mhchem 1
+\use_package stackrel 1
+\use_package stmaryrd 1
+\use_package undertilde 1
+\cite_engine basic
+\cite_engine_type default
+\biblio_style plain
+\use_bibtopic false
+\use_indices false
+\paperorientation portrait
+\suppress_date false
+\justification true
+\use_refstyle 1
+\use_minted 0
+\index Index
+\shortcut idx
+\color #008000
+\end_index
+\secnumdepth 3
+\tocdepth 3
+\paragraph_separation indent
+\paragraph_indentation default
+\is_math_indent 0
+\math_numbering_side default
+\quotes_style french
+\dynamic_quotes 0
+\papercolumns 1
+\papersides 1
+\paperpagestyle default
+\tracking_changes false
+\output_changes false
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
+\end_header
+
+\begin_body
+
+\begin_layout Section
+Clases anidadas
+\end_layout
+
+\begin_layout Standard
+Algunos lenguajes orientados a objetos
+\begin_inset Foot
+status open
+
+\begin_layout Plain Layout
+En esta asignatura, cuando hablamos de programación orientada a objetos
+ nos referimos al sentido actual con lenguajes como Java y C#, centrados
+ en clases, interfaces y patrones de diseño, en vez de al sentido original
+ con lenguajes como Smalltalk, centrados en el intercambio de mensajes.
+\end_layout
+
+\end_inset
+
+ como C++
+\begin_inset Foot
+status open
+
+\begin_layout Plain Layout
+Alan Kay:
+\emph on
+\lang english
+
+\begin_inset Quotes cld
+\end_inset
+
+I made up the term object-oriented and I can tell you I did not have C++
+ in mind.
+\begin_inset Quotes crd
+\end_inset
+
+
+\end_layout
+
+\end_inset
+
+, C# y Java permiten definir una clase dentro de otra cuando esta solo es
+ necesaria dentro de la otra.
+ En Java tenemos:
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Clases anidadas estáticas
+\series default
+, definidas con el modificador
+\family typewriter
+\lang english
+static
+\family default
+\lang spanish
+ en el cuerpo de otra clase.
+ La clase anidada puede ver todos los miembros de la que la contiene y de
+ sus instancias, y viceversa.
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Clases internas
+\series default
+, cuyas instancias existen en el contexto de una instancia de la
+\series bold
+clase externa
+\series default
+ y que pueden ver todos los miembros de dicha instancia.
+ Pueden implementar interfaces, por lo que son útiles para crear
+\emph on
+\lang english
+callbacks
+\emph default
+\lang spanish
+.
+ Tipos:
+\end_layout
+
+\begin_deeper
+\begin_layout Itemize
+
+\series bold
+Clases miembro
+\series default
+, definidas en el cuerpo de la clase externa sin
+\family typewriter
+\lang english
+static
+\family default
+\lang spanish
+.
+ Las instancias son creadas por la clase externa mediante
+\end_layout
+
+\begin_deeper
+\begin_layout Standard
+\align center
+
+\family typewriter
+this.new
+\emph on
+Clase
+\family default
+\emph default
+[
+\family typewriter
+<
+\family default
+[
+\family typewriter
+\emph on
+T
+\emph default
+,
+\family default
+...]
+\family typewriter
+>
+\family default
+]
+\family typewriter
+(
+\family default
+[
+\family typewriter
+\emph on
+parámetro
+\emph default
+,
+\family default
+...]
+\family typewriter
+)
+\family default
+.
+\end_layout
+
+\end_deeper
+\begin_layout Itemize
+
+\series bold
+Clases locales
+\series default
+, definidas en el cuerpo de un método.
+ Tienen en su ámbito las variables locales del método definidas previamente
+ y pueden usar las que son
+\family typewriter
+\lang english
+final
+\family default
+\lang spanish
+.
+ Las instancias son creadas por el método con la sintaxis habitual (
+\family typewriter
+new
+\family default
+).
+\end_layout
+
+\begin_layout Itemize
+
+\series bold
+Clases anónimas
+\series default
+, como las locales pero definidas e instanciadas a la vez con una expresión
+\end_layout
+
+\begin_deeper
+\begin_layout Standard
+\align center
+
+\family typewriter
+new
+\emph on
+Superclase
+\emph default
+(
+\family default
+[
+\family typewriter
+\emph on
+parámetro
+\emph default
+,
+\family default
+...]
+\family typewriter
+) {
+\emph on
+cuerpo de la clase
+\emph default
+}
+\family default
+,
+\end_layout
+
+\begin_layout Standard
+donde
+\family typewriter
+\emph on
+Superclase
+\family default
+\emph default
+ es la clase o interfaz de la que deriva la clase anónima y los parámetros
+ se pasan a un constructor de la
+\family typewriter
+\emph on
+Superclase
+\family default
+\emph default
+, de modo que si esta es una interfaz no hay parámetros.
+ Se usan cuando se necesita un objeto de una clase que implemente una cierta
+ interfaz y la definición es pequeña, de unas 10 líneas.
+
+\end_layout
+
+\end_deeper
+\end_deeper
+\begin_layout Section
+Objetos función
+\end_layout
+
+\begin_layout Standard
+En lenguajes como Smalltalk, Python, Ruby y Javascript, las funciones se
+ pueden tratar como valores y pueden capturar variables del ámbito de su
+ definición.
+\end_layout
+
+\begin_layout Standard
+A partir de Java 8, una
+\series bold
+expresión lambda
+\series default
+ es una de la forma
+\family typewriter
+(
+\family default
+[[
+\family typewriter
+\emph on
+tipo
+\family default
+\emph default
+]
+\family typewriter
+\emph on
+parámetro
+\emph default
+,
+\family default
+...]
+\family typewriter
+) -> {
+\emph on
+cuerpo
+\emph default
+ }
+\family default
+, que si se esperaba un objeto de una
+\family typewriter
+\emph on
+Interfaz
+\family default
+\emph default
+ que solo tiene un
+\family typewriter
+\emph on
+método
+\family default
+\emph default
+, equivale a
+\family typewriter
+\lang english
+new
+\lang spanish
+
+\emph on
+Interfaz
+\emph default
+ {
+\lang english
+public
+\lang spanish
+
+\emph on
+método
+\emph default
+(
+\family default
+[
+\family typewriter
+\emph on
+parámetro
+\emph default
+,
+\family default
+...]
+\family typewriter
+) {
+\emph on
+cuerpo
+\emph default
+ }
+\family default
+.
+
+\end_layout
+
+\begin_layout Standard
+Además,
+\family typewriter
+{
+\lang english
+return
+\emph on
+expr
+\emph default
+\lang spanish
+; }
+\family default
+ se puede abreviar como
+\family typewriter
+\emph on
+expr
+\family default
+\emph default
+, y si hay solo un parámetro se puede cambiar
+\family typewriter
+(
+\emph on
+parámetro
+\emph default
+)
+\family default
+ por
+\family typewriter
+\emph on
+parámetro
+\family default
+\emph default
+.
+
+\family typewriter
+\emph on
+Clase
+\emph default
+::
+\emph on
+método
+\family default
+\emph default
+ equivale a
+\family typewriter
+\emph on
+Clase
+\emph default
+ o -> o.
+\emph on
+método
+\emph default
+()
+\family default
+, y
+\family typewriter
+\emph on
+Clase
+\emph default
+::new
+\family default
+ equivale a
+\family typewriter
+(
+\family default
+[
+\family typewriter
+\emph on
+parámetro
+\emph default
+,
+\family default
+...]
+\family typewriter
+) -> new
+\emph on
+Clase
+\emph default
+(
+\emph on
+parámetro
+\emph default
+,
+\family default
+...
+\family typewriter
+)
+\family default
+, donde el constructor tomado depende de la interfaz de cuyo tipo se esperaba
+ un objeto.
+\end_layout
+
+\begin_layout Standard
+Una
+\series bold
+interfaz funcional
+\series default
+ es una con un solo método usada como tipo de una expresión lambda.
+ Se puede anotar con
+\family typewriter
+@
+\lang english
+FunctionalInterface
+\family default
+\lang spanish
+ encima de la interfaz.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+package
+\begin_inset space ~
+\end_inset
+
+java.awt.event
+\family default
+ Interfaces y clases de eventos lanzados por componentes AWT.
+\begin_inset Foot
+status open
+
+\begin_layout Plain Layout
+En adelante los tipos de datos y métodos cuya visibilidad no se especifique
+ tienen visibilidad pública.
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+interface
+\begin_inset space ~
+\end_inset
+
+ActionListener
+\begin_inset space ~
+\end_inset
+
+extends
+\begin_inset space ~
+\end_inset
+
+EventListener
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+void
+\begin_inset space ~
+\end_inset
+
+actionPerformed(ActionEvent)
+\family default
+ Recibe una acción y actúa en consecuencia.
+\end_layout
+
+\end_deeper
+\end_deeper
+\begin_layout Description
+
+\family typewriter
+package
+\begin_inset space ~
+\end_inset
+
+java.util
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+\series bold
+interface
+\begin_inset space ~
+\end_inset
+
+EventListener
+\family default
+\series default
+ Marcador para interfaces que reciben eventos.
+\end_layout
+
+\end_deeper
+\begin_layout Description
+
+\family typewriter
+package
+\begin_inset space ~
+\end_inset
+
+java.util.function
+\family default
+ Interfaces funcionales genéricas.
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+\series bold
+@FunctionalInterface
+\begin_inset space ~
+\end_inset
+
+interface
+\begin_inset space ~
+\end_inset
+
+BiFunction<T,U,R>
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+R
+\begin_inset space ~
+\end_inset
+
+apply(T,U)
+\family default
+ Aplica cierta función a los argumentos.
+\end_layout
+
+\end_deeper
+\begin_layout Description
+
+\family typewriter
+\series bold
+@FunctionalInterface
+\begin_inset space ~
+\end_inset
+
+interface
+\begin_inset space ~
+\end_inset
+
+BinaryOperator<T>
+\begin_inset space ~
+\end_inset
+
+extends
+\begin_inset space ~
+\end_inset
+
+BiFunction<T,T,T>
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+@FunctionalInterface
+\begin_inset space ~
+\end_inset
+
+interface
+\begin_inset space ~
+\end_inset
+
+Consumer<T>
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+void
+\begin_inset space ~
+\end_inset
+
+Accept(T)
+\family default
+ Acepta un argumento y hace algo con él.
+\end_layout
+
+\end_deeper
+\begin_layout Description
+
+\family typewriter
+@FunctionalInterface
+\begin_inset space ~
+\end_inset
+
+interface
+\begin_inset space ~
+\end_inset
+
+Function<T,R>
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+R
+\begin_inset space ~
+\end_inset
+
+apply(T)
+\family default
+ Aplica cierta función al argumento.
+\end_layout
+
+\end_deeper
+\begin_layout Description
+
+\family typewriter
+@FunctionalInterface
+\begin_inset space ~
+\end_inset
+
+interface
+\begin_inset space ~
+\end_inset
+
+Predicate<T>
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+boolean
+\begin_inset space ~
+\end_inset
+
+test(T)
+\family default
+ Comprueba si el argumento cumple cierta condición.
+\end_layout
+
+\end_deeper
+\begin_layout Description
+
+\family typewriter
+@FunctionalInterface
+\begin_inset space ~
+\end_inset
+
+interface
+\begin_inset space ~
+\end_inset
+
+Supplier<T>
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+T
+\begin_inset space ~
+\end_inset
+
+get()
+\family default
+ Suministra un objeto.
+ No tiene por qué ser siempre el mismo o distinto.
+\end_layout
+
+\end_deeper
+\begin_layout Description
+
+\family typewriter
+@FunctionalInterface
+\begin_inset space ~
+\end_inset
+
+interface
+\begin_inset space ~
+\end_inset
+
+ToIntFunction<T>
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+int
+\begin_inset space ~
+\end_inset
+
+applyAsInt(T)
+\family default
+ Aplica una función entera al argumento.
+\end_layout
+
+\end_deeper
+\end_deeper
+\begin_layout Description
+
+\family typewriter
+package
+\begin_inset space ~
+\end_inset
+
+javax.swing
+\family default
+ Biblioteca de interfaz gráfica multiplataforma.
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+\series bold
+abstract
+\begin_inset space ~
+\end_inset
+
+class
+\begin_inset space ~
+\end_inset
+
+AbstractButton
+\family default
+\series default
+ Código común a varios tipos de botones.
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+void
+\begin_inset space ~
+\end_inset
+
+addActionListener(ActionListener)
+\family default
+ Añade un
+\family typewriter
+ActionListener
+\family default
+ para llamarlo al pulsar el botón.
+\end_layout
+
+\end_deeper
+\begin_layout Description
+
+\family typewriter
+\series bold
+class
+\begin_inset space ~
+\end_inset
+
+JButton
+\series default
+
+\begin_inset space ~
+\end_inset
+
+extends
+\begin_inset space ~
+\end_inset
+
+AbstractButton
+\family default
+ Botón estándar.
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+@ConstructorProperties(value=
+\begin_inset Quotes qrd
+\end_inset
+
+text
+\begin_inset Quotes qrd
+\end_inset
+
+)
+\begin_inset space ~
+\end_inset
+
+JButton(String)
+\family default
+ Crea un botón con el texto dado.
+\end_layout
+
+\end_deeper
+\begin_layout Description
+
+\family typewriter
+class
+\begin_inset space ~
+\end_inset
+
+JLabel
+\family default
+ Área para mostrar un texto corto, una imagen o ambos.
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+JLabel()
+\family default
+ Crea un
+\family typewriter
+JLabel
+\family default
+ sin imagen ni texto.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+void
+\begin_inset space ~
+\end_inset
+
+setText(String)
+\family default
+ Establece el texto.
+\end_layout
+
+\end_deeper
+\end_deeper
+\begin_layout Section
+Objetos nulos
+\end_layout
+
+\begin_layout Standard
+La mayoría de lenguajes de programación desde Algol
+\begin_inset space ~
+\end_inset
+
+W representan la falta de un valor como un valor especial
+\family typewriter
+null
+\family default
+ o
+\family typewriter
+nil
+\family default
+.
+ Esto hace el código menos legible por las comprobaciones, es fuente de
+ errores y rompe con la idea de ocultar los punteros, por lo que Scala
+\begin_inset Foot
+status open
+
+\begin_layout Plain Layout
+Y en general los lenguajes funcionales.
+\end_layout
+
+\end_inset
+
+ usa en su lugar un tipo
+\family typewriter
+Option[T]
+\family default
+ (que puede contener un valor de tipo
+\family typewriter
+T
+\family default
+ o ninguno) y Groovy usa un operador de navegación segura (que sale de la
+ función si el operando es nulo).
+\end_layout
+
+\begin_layout Standard
+En Java, el patrón
+\emph on
+\lang english
+Null Object
+\emph default
+\lang spanish
+ consiste en sustituir
+\family typewriter
+null
+\family default
+ para una interfaz por un valor de una clase que implemente la interfaz
+ con una implementación apropiada para la ausencia de valor.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+final
+\begin_inset space ~
+\end_inset
+
+class
+\begin_inset space ~
+\end_inset
+
+java.util.Optional<T>
+\family default
+ Valor de
+\family typewriter
+T
+\family default
+ no nulo o ausencia de valor.
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+static
+\begin_inset space ~
+\end_inset
+
+<T>
+\begin_inset space ~
+\end_inset
+
+Optional<T>
+\begin_inset space ~
+\end_inset
+
+empty()
+\family default
+ Devuelve un
+\family typewriter
+Optional
+\family default
+ vacío.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+\series bold
+T
+\begin_inset space ~
+\end_inset
+
+get()
+\family default
+\series default
+ Si tiene un valor lo devuelve.
+
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+boolean
+\begin_inset space ~
+\end_inset
+
+isPresent()
+\family default
+ Indica si tiene un valor.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+static
+\begin_inset space ~
+\end_inset
+
+<T>
+\begin_inset space ~
+\end_inset
+
+Optional<T>
+\begin_inset space ~
+\end_inset
+
+of(T)
+\family default
+ Devuelve un
+\family typewriter
+Optional
+\family default
+ con el valor no nulo dado.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+static
+\begin_inset space ~
+\end_inset
+
+<T>
+\begin_inset space ~
+\end_inset
+
+Optional<T>
+\begin_inset space ~
+\end_inset
+
+ofNullable(T)
+\family default
+ Devuelve un
+\family typewriter
+Optional
+\family default
+ con el valor dado si es no nulo o vacío en otro caso.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+T
+\begin_inset space ~
+\end_inset
+
+orElse(T)
+\family default
+ Si tiene un valor lo devuelve, y si no devuelve el parámetro.
+\end_layout
+
+\end_deeper
+\begin_layout Section
+
+\emph on
+\lang english
+Streams
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+\series bold
+package
+\begin_inset space ~
+\end_inset
+
+java.lang
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+final
+\begin_inset space ~
+\end_inset
+
+class
+\begin_inset space ~
+\end_inset
+
+String
+\family default
+ Tipo de los literales de cadena de caracteres, inmutable.
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+boolean
+\begin_inset space ~
+\end_inset
+
+endsWith(String)
+\family default
+ Indica si la cadena tiene el sufijo indicado.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+String
+\begin_inset space ~
+\end_inset
+
+toUpperCase()
+\family default
+ Convierte la cadena a mayúsculas con la localización por defecto.
+\end_layout
+
+\end_deeper
+\end_deeper
+\begin_layout Description
+
+\family typewriter
+\series bold
+package
+\begin_inset space ~
+\end_inset
+
+java.util
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+interface
+\begin_inset space ~
+\end_inset
+
+Collection<E>
+\family default
+ Colección de elementos de un tipo
+\family typewriter
+E
+\family default
+.
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+\series bold
+default
+\begin_inset space ~
+\end_inset
+
+Stream<E>
+\begin_inset space ~
+\end_inset
+
+parallelStream()
+\family default
+\series default
+ Devuelve un
+\emph on
+\lang english
+stream
+\emph default
+\lang spanish
+ posiblemente paralelo con los elementos de la colección.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+default
+\begin_inset space ~
+\end_inset
+
+Stream<E>
+\begin_inset space ~
+\end_inset
+
+stream()
+\family default
+ Devuelve un
+\emph on
+\lang english
+stream
+\emph default
+\lang spanish
+ secuencial sobre los elementos de la colección.
+\end_layout
+
+\begin_layout Description
+...
+\end_layout
+
+\end_deeper
+\end_deeper
+\begin_layout Description
+
+\family typewriter
+package
+\begin_inset space ~
+\end_inset
+
+java.util.stream
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+\series bold
+interface
+\begin_inset space ~
+\end_inset
+
+Collector<T,A,R>
+\family default
+\series default
+ Operación de reducción de elementos de tipo
+\family typewriter
+T
+\family default
+ al tipo
+\family typewriter
+A
+\family default
+ con representación final de tipo
+\family typewriter
+R
+\family default
+.
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+...
+\end_layout
+
+\end_deeper
+\begin_layout Description
+
+\family typewriter
+class
+\begin_inset space ~
+\end_inset
+
+Collectors
+\family default
+ Colectores útiles.
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+\series bold
+\begin_inset Box Frameless
+position "t"
+hor_pos "c"
+has_inner_box 1
+inner_pos "t"
+use_parbox 0
+use_makebox 0
+width "100col%"
+special "none"
+height "1in"
+height_special "totalheight"
+thickness "0.4pt"
+separation "3pt"
+shadowsize "4pt"
+framecolor "black"
+backgroundcolor "none"
+status open
+
+\begin_layout Plain Layout
+
+\family typewriter
+\series bold
+static <T,K> Collector<T,?,Map<K,List<T>>> groupingBy(
+\begin_inset Newline newline
+\end_inset
+
+Function<? super T,? extends K>)
+\end_layout
+
+\end_inset
+
+
+\family default
+\series default
+ Aplica la función a todos los elementos y devuelve un diccionario cuyas
+ claves son los valores devueltos por la función y cuyos valores son listas
+ con los elementos a los que la función asocia la clave.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+\series bold
+static
+\begin_inset space ~
+\end_inset
+
+<T>
+\begin_inset space ~
+\end_inset
+
+Collector<T,?,Integer>
+\begin_inset space ~
+\end_inset
+
+summingInt(ToIntFunction<?
+\begin_inset space ~
+\end_inset
+
+super
+\begin_inset space ~
+\end_inset
+
+T>)
+\family default
+\series default
+ Aplica la función a cada elemento y devuelve la suma.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+\series bold
+\begin_inset Box Frameless
+position "t"
+hor_pos "c"
+has_inner_box 1
+inner_pos "t"
+use_parbox 0
+use_makebox 0
+width "100col%"
+special "none"
+height "1in"
+height_special "totalheight"
+thickness "0.4pt"
+separation "3pt"
+shadowsize "4pt"
+framecolor "black"
+backgroundcolor "none"
+status open
+
+\begin_layout Plain Layout
+
+\family typewriter
+\series bold
+static <T,C extends Collection<T>> Collector<T,?,C> toCollection(
+\begin_inset Newline newline
+\end_inset
+
+Supplier<C>)
+\end_layout
+
+\end_inset
+
+
+\family default
+\series default
+ Almacena los elementos en una colección proporcionada por el parámetro.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+static
+\begin_inset space ~
+\end_inset
+
+<T>
+\begin_inset space ~
+\end_inset
+
+Collector<T,?,List<T>>
+\begin_inset space ~
+\end_inset
+
+toList()
+\family default
+ Almacena los elementos en una nueva lista.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+static
+\begin_inset space ~
+\end_inset
+
+<T>
+\begin_inset space ~
+\end_inset
+
+Collector<T,?,Set<T>>
+\begin_inset space ~
+\end_inset
+
+toSet()
+\family default
+ Almacena los elementos en un nuevo conjunto.
+\end_layout
+
+\end_deeper
+\begin_layout Description
+
+\family typewriter
+interface
+\begin_inset space ~
+\end_inset
+
+java.util.stream.Stream<T>
+\family default
+ Secuencia de elementos que soporta operaciones secuenciales y paralelas.
+ En general los métodos que devuelven (siempre) otro
+\emph on
+\lang english
+stream
+\emph default
+\lang spanish
+ son perezosas; no procesan los elementos hasta que sea necesario.
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+\series bold
+bool
+\begin_inset space ~
+\end_inset
+
+allMatch(Predicate<?
+\begin_inset space ~
+\end_inset
+
+super
+\begin_inset space ~
+\end_inset
+
+T>)
+\family default
+\series default
+ Indica si todos los elementos del
+\emph on
+\lang english
+stream
+\emph default
+\lang spanish
+ cumplen la condición.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+\series bold
+bool
+\begin_inset space ~
+\end_inset
+
+anyMatch(Predicate<?
+\begin_inset space ~
+\end_inset
+
+super
+\begin_inset space ~
+\end_inset
+
+T>)
+\family default
+\series default
+ Indica si alguno cumple la condición.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+<R,A>
+\begin_inset space ~
+\end_inset
+
+R
+\begin_inset space ~
+\end_inset
+
+collect(Collector<?
+\begin_inset space ~
+\end_inset
+
+super
+\begin_inset space ~
+\end_inset
+
+T,A,R>)
+\family default
+ Reduce los elementos con el colector dado.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+long
+\begin_inset space ~
+\end_inset
+
+count()
+\family default
+ Devuelve el número de elementos en el
+\emph on
+\lang english
+stream
+\emph default
+\lang spanish
+.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+\series bold
+Stream<T>
+\begin_inset space ~
+\end_inset
+
+filter(Predicate<?
+\begin_inset space ~
+\end_inset
+
+super
+\begin_inset space ~
+\end_inset
+
+T>)
+\family default
+\series default
+ Devuelve un
+\emph on
+\lang english
+stream
+\emph default
+\lang spanish
+ con los elementos de este que cumplen la condición.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+Optional<T>
+\begin_inset space ~
+\end_inset
+
+findAny()
+\family default
+ Devuelve un elemento cualquiera del
+\emph on
+\lang english
+stream
+\emph default
+\lang spanish
+ si lo hay.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+\begin_inset Box Frameless
+position "t"
+hor_pos "c"
+has_inner_box 1
+inner_pos "t"
+use_parbox 0
+use_makebox 0
+width "100col%"
+special "none"
+height "1in"
+height_special "totalheight"
+thickness "0.4pt"
+separation "3pt"
+shadowsize "4pt"
+framecolor "black"
+backgroundcolor "none"
+status open
+
+\begin_layout Plain Layout
+
+\family typewriter
+\series bold
+<R> Stream<R> flatMap(
+\begin_inset Newline newline
+\end_inset
+
+Function<? super T,?
+\begin_inset space ~
+\end_inset
+
+extends Stream<? extends
+\begin_inset space ~
+\end_inset
+
+R>>)
+\end_layout
+
+\end_inset
+
+
+\family default
+ Devuelve un
+\emph on
+\lang english
+stream
+\emph default
+\lang spanish
+ con los elementos de los
+\emph on
+\lang english
+streams
+\emph default
+\lang spanish
+ resultantes de aplicar la función a cada elemento del
+\emph on
+\lang english
+stream
+\emph default
+\lang spanish
+.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+void
+\begin_inset space ~
+\end_inset
+
+forEach(Consumer<?
+\begin_inset space ~
+\end_inset
+
+super
+\begin_inset space ~
+\end_inset
+
+T>)
+\family default
+ Aplica la acción con cada elemento.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+static
+\begin_inset space ~
+\end_inset
+
+<T>
+\begin_inset space ~
+\end_inset
+
+Stream<T>
+\begin_inset space ~
+\end_inset
+
+of(T...)
+\family default
+ Devuelve un
+\emph on
+\lang english
+stream
+\emph default
+\lang spanish
+ secuencial con los elementos dados.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+<R>
+\begin_inset space ~
+\end_inset
+
+Stream<R>
+\begin_inset space ~
+\end_inset
+
+map(Function<?
+\begin_inset space ~
+\end_inset
+
+super
+\begin_inset space ~
+\end_inset
+
+T,?
+\begin_inset space ~
+\end_inset
+
+extends
+\begin_inset space ~
+\end_inset
+
+R>)
+\family default
+ Devuelve un
+\emph on
+\lang english
+stream
+\emph default
+\lang spanish
+ resultante de aplicar la función dada a cada elemento de este.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+Optional<T>
+\begin_inset space ~
+\end_inset
+
+max(Comparator<?
+\begin_inset space ~
+\end_inset
+
+super
+\begin_inset space ~
+\end_inset
+
+T>)
+\family default
+ Devuelve el máximo del
+\emph on
+\lang english
+stream
+\emph default
+\lang spanish
+ según el comparador, salvo que esté vacío.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+Optional<T>
+\begin_inset space ~
+\end_inset
+
+min(Comparator<?
+\begin_inset space ~
+\end_inset
+
+super
+\begin_inset space ~
+\end_inset
+
+T>)
+\family default
+ Devuelve el mínimo del
+\emph on
+\lang english
+stream
+\emph default
+\lang spanish
+ según el comparador, salvo que esté vacío.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+boolean
+\begin_inset space ~
+\end_inset
+
+noneMatch(Predicate<?
+\begin_inset space ~
+\end_inset
+
+super
+\begin_inset space ~
+\end_inset
+
+T>)
+\family default
+ Indica si ningún elemento cumple la condición.
+
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+Optional<T>
+\begin_inset space ~
+\end_inset
+
+reduce(BinaryOperator<T>)
+\family default
+ Reduce los elementos del
+\emph on
+\lang english
+stream
+\emph default
+\lang spanish
+ con una función de acumulación asociativa, salvo que esté vacío.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+Stream<T>
+\begin_inset space ~
+\end_inset
+
+sorted()
+\family default
+ Devuelve un
+\emph on
+\lang english
+stream
+\emph default
+\lang spanish
+ con los elementos de este ordenados por su orden natural.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+Stream<T>
+\begin_inset space ~
+\end_inset
+
+sorted(Comparator<?
+\begin_inset space ~
+\end_inset
+
+super
+\begin_inset space ~
+\end_inset
+
+T>)
+\family default
+ Como
+\family typewriter
+sorted()
+\family default
+ pero usa el comparador indicado.
+\end_layout
+
+\end_deeper
+\end_deeper
+\begin_layout Section
+Introspección
+\end_layout
+
+\begin_layout Standard
+Una clase puede considerarse un objeto, y una
+\series bold
+metaclase
+\series default
+ es una clase cuyas instancias son clases.
+ La
+\series bold
+introspección
+\series default
+ o
+\series bold
+reflexión
+\series default
+ es la posibilidad de analizar el código del programa en tiempo de ejecución,
+ y la
+\series bold
+metaprogramación
+\series default
+ es la posibilidad de modificarlo o generarlo desde el propio lenguaje.
+\end_layout
+
+\begin_layout Standard
+Smalltalk, Python y Ruby proporcionan metaprogramación, y Java proporciona
+ introspección.
+ Los objetos clase tienen atributos con las propiedades de una clase y métodos
+ para su acceso y, en el caso de metaprogramación, su modificación.
+
+\end_layout
+
+\begin_layout Standard
+La introspección es útil en inspectores de código, navegadores de clases,
+ creadores de interfaces de usuario, lenguajes específicos de dominio (
+\series bold
+DSLs
+\series default
+,
+\emph on
+\lang english
+Domain-Specific Languages
+\emph default
+\lang spanish
+), etc., pero
+\begin_inset Quotes cld
+\end_inset
+
+convierte
+\begin_inset Quotes crd
+\end_inset
+
+ errores en tiempo de compilación en errores en tiempo de ejecución y el
+ código suele ser largo y tedioso, por lo que se recomienda solo usarlo
+ para instanciar objetos y acceder a ellos con alguna interfaz o superclase
+ conocida en tiempo de ejecución.
+
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+\series bold
+package
+\begin_inset space ~
+\end_inset
+
+java.lang
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+final
+\begin_inset space ~
+\end_inset
+
+class
+\begin_inset space ~
+\end_inset
+
+Class<T>
+\family default
+ El único objeto es la entidad
+\family typewriter
+T
+\family default
+, que es devuelto por la expresión
+\family typewriter
+T.class
+\family default
+.
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+\series medium
+\begin_inset Box Frameless
+position "t"
+hor_pos "c"
+has_inner_box 1
+inner_pos "t"
+use_parbox 0
+use_makebox 0
+width "100col%"
+special "none"
+height "1in"
+height_special "totalheight"
+thickness "0.4pt"
+separation "3pt"
+shadowsize "4pt"
+framecolor "black"
+backgroundcolor "none"
+status open
+
+\begin_layout Plain Layout
+
+\family typewriter
+\series bold
+static
+\begin_inset space ~
+\end_inset
+
+Class<?>
+\begin_inset space ~
+\end_inset
+
+forName(String)
+\begin_inset space ~
+\end_inset
+
+throws
+\begin_inset space ~
+\end_inset
+
+ClassNotFoundException
+\end_layout
+
+\end_inset
+
+
+\family default
+\series default
+ Clase con el nombre indicado.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+\begin_inset Box Frameless
+position "t"
+hor_pos "c"
+has_inner_box 1
+inner_pos "t"
+use_parbox 0
+use_makebox 0
+width "100col%"
+special "none"
+height "1in"
+height_special "totalheight"
+thickness "0.4pt"
+separation "3pt"
+shadowsize "4pt"
+framecolor "black"
+backgroundcolor "none"
+status open
+
+\begin_layout Plain Layout
+
+\family typewriter
+\series bold
+Constructor<?>[]
+\begin_inset space ~
+\end_inset
+
+getConstructors()
+\begin_inset space ~
+\end_inset
+
+throws
+\begin_inset space ~
+\end_inset
+
+SecurityException
+\end_layout
+
+\end_inset
+
+
+\family default
+ Constructores públicos de la clase.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+\begin_inset Box Frameless
+position "t"
+hor_pos "c"
+has_inner_box 1
+inner_pos "t"
+use_parbox 0
+use_makebox 0
+width "100col%"
+special "none"
+height "1in"
+height_special "totalheight"
+thickness "0.4pt"
+separation "3pt"
+shadowsize "4pt"
+framecolor "black"
+backgroundcolor "none"
+status open
+
+\begin_layout Plain Layout
+
+\family typewriter
+\series bold
+Field[]
+\begin_inset space ~
+\end_inset
+
+getFields()
+\begin_inset space ~
+\end_inset
+
+throws
+\begin_inset space ~
+\end_inset
+
+SecurityException
+\end_layout
+
+\end_inset
+
+
+\family default
+ Atributos públicos de la clase.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+Class<?>[]
+\begin_inset space ~
+\end_inset
+
+getInterfaces()
+\family default
+ Interfaces que implementa la clase o interfaz.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+Method[]
+\begin_inset space ~
+\end_inset
+
+getMethods()
+\begin_inset space ~
+\end_inset
+
+throws
+\begin_inset space ~
+\end_inset
+
+SecurityException
+\family default
+ Métodos públicos de la clase o interfaz, incluyendo los de las superclases.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+String
+\begin_inset space ~
+\end_inset
+
+getName()
+\family default
+ Nombre de la entidad.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+Package
+\begin_inset space ~
+\end_inset
+
+getPackage()
+\family default
+ Paquete en que se encuentra la entidad.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+Class<?
+\begin_inset space ~
+\end_inset
+
+super
+\begin_inset space ~
+\end_inset
+
+T>
+\begin_inset space ~
+\end_inset
+
+getSuperClass()
+\family default
+ Superclase de la clase, salvo de
+\family typewriter
+Object
+\family default
+.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+T
+\begin_inset space ~
+\end_inset
+
+newInstance()
+\begin_inset space ~
+\end_inset
+
+throws
+\begin_inset space ~
+\end_inset
+
+InstantiationException,
+\begin_inset space ~
+\end_inset
+
+IllegalAccessException
+\family default
+ Crea una instancia de la clase con el constructor por defecto, si existe.
+\end_layout
+
+\end_deeper
+\begin_layout Description
+
+\family typewriter
+\series bold
+\begin_inset Box Frameless
+position "t"
+hor_pos "c"
+has_inner_box 1
+inner_pos "t"
+use_parbox 0
+use_makebox 0
+width "100col%"
+special "none"
+height "1in"
+height_special "totalheight"
+thickness "0.4pt"
+separation "3pt"
+shadowsize "4pt"
+framecolor "black"
+backgroundcolor "none"
+status open
+
+\begin_layout Plain Layout
+
+\family typewriter
+\series bold
+class
+\begin_inset space ~
+\end_inset
+
+ClassNotFoundException
+\end_layout
+
+\end_inset
+
+
+\family default
+\series default
+ No se ha encontrado una definición de la clase indicada.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+\series bold
+class
+\begin_inset space ~
+\end_inset
+
+IllegalAccessException
+\family default
+\series default
+ El método actualmente en ejecución no tiene acceso a la definición de la
+ entidad o el miembro indicado.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+class
+\begin_inset space ~
+\end_inset
+
+InstantiationException
+\family default
+ La clase no tiene constructor por defecto.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+class
+\begin_inset space ~
+\end_inset
+
+Object
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+Class<?>
+\begin_inset space ~
+\end_inset
+
+getClass()
+\family default
+ Devuelve la clase en tiempo de ejecución del objeto.
+\end_layout
+
+\end_deeper
+\begin_layout Description
+
+\family typewriter
+\series bold
+class
+\begin_inset space ~
+\end_inset
+
+Package
+\family default
+\series default
+ Paquete de código.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+class
+\begin_inset space ~
+\end_inset
+
+SecurityException
+\family default
+ Violación de seguridad.
+\end_layout
+
+\end_deeper
+\begin_layout Description
+
+\family typewriter
+\series bold
+package
+\begin_inset space ~
+\end_inset
+
+java.lang.reflect
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+\series bold
+final
+\begin_inset space ~
+\end_inset
+
+class
+\begin_inset space ~
+\end_inset
+
+Constructor<T>
+\begin_inset space ~
+\end_inset
+
+extends
+\begin_inset space ~
+\end_inset
+
+Executable
+\family default
+\series default
+ Constructor de la clase
+\family typewriter
+T
+\family default
+.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+abstract
+\begin_inset space ~
+\end_inset
+
+class
+\begin_inset space ~
+\end_inset
+
+Executable
+\begin_inset space ~
+\end_inset
+
+extends
+\begin_inset space ~
+\end_inset
+
+AccessibleObject
+\begin_inset space ~
+\end_inset
+
+implements
+\begin_inset space ~
+\end_inset
+
+Member
+\family default
+
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+final
+\begin_inset space ~
+\end_inset
+
+class
+\begin_inset space ~
+\end_inset
+
+Field
+\begin_inset space ~
+\end_inset
+
+implements
+\begin_inset space ~
+\end_inset
+
+Member
+\family default
+ Atributo de una clase.
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+\series bold
+\begin_inset Box Frameless
+position "t"
+hor_pos "c"
+has_inner_box 1
+inner_pos "t"
+use_parbox 0
+use_makebox 0
+width "100col%"
+special "none"
+height "1in"
+height_special "totalheight"
+thickness "0.4pt"
+separation "3pt"
+shadowsize "4pt"
+framecolor "black"
+backgroundcolor "none"
+status open
+
+\begin_layout Plain Layout
+
+\family typewriter
+\series bold
+public Object get(Object) throws IllegalArgumentException,
+\begin_inset Newline newline
+\end_inset
+
+IllegalAccessException
+\end_layout
+
+\end_inset
+
+
+\family default
+\series default
+ Valor del atributo en el objeto indicado.
+\end_layout
+
+\end_deeper
+\begin_layout Description
+
+\family typewriter
+public
+\begin_inset space ~
+\end_inset
+
+Class<?>
+\begin_inset space ~
+\end_inset
+
+getType()
+\family default
+ Tipo del atributo.
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+public
+\begin_inset space ~
+\end_inset
+
+void
+\begin_inset space ~
+\end_inset
+
+set(Object,Object)
+\family default
+ Establece el valor del atributo en el primer objeto como el segundo objeto.
+\end_layout
+
+\end_deeper
+\begin_layout Description
+
+\family typewriter
+interface
+\begin_inset space ~
+\end_inset
+
+Member
+\family default
+ Miembro de una clase.
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+Class<?>
+\begin_inset space ~
+\end_inset
+
+getDeclaringClass()
+\family default
+ Clase que declara el miembro.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+String
+\begin_inset space ~
+\end_inset
+
+getName()
+\family default
+ Nombre del miembro.
+\end_layout
+
+\begin_layout Description
+...
+\end_layout
+
+\end_deeper
+\begin_layout Description
+
+\family typewriter
+final
+\begin_inset space ~
+\end_inset
+
+class
+\begin_inset space ~
+\end_inset
+
+Method
+\begin_inset space ~
+\end_inset
+
+extends
+\begin_inset space ~
+\end_inset
+
+Executable
+\family default
+ Método de una clase.
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+Class<?>[]
+\begin_inset space ~
+\end_inset
+
+getParameterTypes()
+\family default
+ Tipos de los parámetros del método.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+\series bold
+Class<?>
+\begin_inset space ~
+\end_inset
+
+getReturnType()
+\family default
+\series default
+ Tipo de retorno del método.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+Object
+\begin_inset space ~
+\end_inset
+
+invoke(Object,Object...)
+\family default
+ Invoca el método sobre el objeto indicado con los parámetros indicados.
+ Si el método es estático, el objeto es ignorado y puede ser
+\family typewriter
+null
+\family default
+.
+\end_layout
+
+\end_deeper
+\end_deeper
+\begin_layout Section
+Anotaciones
+\end_layout
+
+\begin_layout Standard
+La anotaciones en Java permiten adjuntar metadatos al código que pueden
+ ser leídos por el compilador, herramientas como de generación de código
+ o el propio programa con introspección.
+\end_layout
+
+\begin_layout Standard
+Estas se declaran con un tipo introspección, de la forma [
+\family typewriter
+\emph on
+visibilidad
+\family default
+\emph default
+]
+\family typewriter
+ @interface
+\emph on
+Nombre
+\emph default
+ {
+\emph on
+campo
+\family default
+\emph default
+*
+\family typewriter
+ }
+\family default
+, donde los campos tienen forma
+\family typewriter
+\emph on
+Tipo
+\emph default
+
+\emph on
+nombre
+\emph default
+()
+\family default
+[
+\family typewriter
+default
+\emph on
+valor
+\family default
+\emph default
+]
+\family typewriter
+;
+\family default
+, siendo
+\family typewriter
+\emph on
+valor
+\family default
+\emph default
+ del
+\family typewriter
+\emph on
+Tipo
+\family default
+\emph default
+ indicado.
+ Para anotar un tipo, método, etc., se coloca
+\family typewriter
+@
+\emph on
+Anotación
+\emph default
+(
+\family default
+[
+\family typewriter
+\emph on
+valor
+\emph default
+,
+\family default
+...]
+\family typewriter
+)
+\family default
+ o
+\family typewriter
+@
+\emph on
+Anotación
+\emph default
+(
+\emph on
+nombre
+\emph default
+=
+\emph on
+valor
+\emph default
+,
+\family default
+...
+\family typewriter
+)
+\family default
+ como un modificador de este, normalmente antes del resto de modificadores.
+\end_layout
+
+\begin_layout Standard
+Si el valor es de tipo
+\family typewriter
+T[]
+\family default
+, se puede indicar una lista de un solo elemento indicando simplemente el
+ elemento.
+ Si es un enumerado
+\family typewriter
+\emph on
+Enum
+\family default
+\emph default
+, se puede usar
+\family typewriter
+\emph on
+VAL
+\family default
+\emph default
+ en vez de
+\family typewriter
+\emph on
+Enum
+\emph default
+.
+\emph on
+VAL
+\family default
+\emph default
+.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+package
+\begin_inset space ~
+\end_inset
+
+java.lang
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+\series bold
+\begin_inset Box Frameless
+position "t"
+hor_pos "c"
+has_inner_box 1
+inner_pos "t"
+use_parbox 0
+use_makebox 0
+width "100col%"
+special "none"
+height "1in"
+height_special "totalheight"
+thickness "0.4pt"
+separation "3pt"
+shadowsize "4pt"
+framecolor "black"
+backgroundcolor "none"
+status open
+
+\begin_layout Plain Layout
+
+\family typewriter
+\series bold
+@Documented @Target(TYPE) @Retention(RUNTIME) @interface
+\begin_inset Newline newline
+\end_inset
+
+FunctionalInterface
+\end_layout
+
+\end_inset
+
+
+\family default
+\series default
+ Indica que lo anotado es una interfaz funcional.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+@Target(METHOD)
+\begin_inset space ~
+\end_inset
+
+@Retention(SOURCE)
+\begin_inset space ~
+\end_inset
+
+@interface
+\begin_inset space ~
+\end_inset
+
+Override
+\family default
+ Indica que el método sobrescribe a un método de una superclase.
+ Genera un error si no es así.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+\begin_inset Box Frameless
+position "t"
+hor_pos "c"
+has_inner_box 1
+inner_pos "t"
+use_parbox 0
+use_makebox 0
+width "100col%"
+special "none"
+height "1in"
+height_special "totalheight"
+thickness "0.4pt"
+separation "3pt"
+shadowsize "4pt"
+framecolor "black"
+backgroundcolor "none"
+status open
+
+\begin_layout Plain Layout
+
+\family typewriter
+\series bold
+@Target({TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE})
+\begin_inset Newline newline
+\end_inset
+
+@Retention(SOURCE) @interface SuppressWarnings
+\end_layout
+
+\end_inset
+
+
+\family default
+ Suprime las alertas del compilador en el elemento anotado.
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+String[]
+\begin_inset space ~
+\end_inset
+
+value
+\family default
+ Conjunto de alertas a suprimir.
+\end_layout
+
+\end_deeper
+\end_deeper
+\begin_layout Description
+
+\family typewriter
+package
+\begin_inset space ~
+\end_inset
+
+java.lang.annotation
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+\series bold
+interface
+\begin_inset space ~
+\end_inset
+
+Annotation
+\family default
+\series default
+ Interfaz implementada por todos los tipos de anotación.
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+...
+\end_layout
+
+\end_deeper
+\begin_layout Description
+
+\family typewriter
+\series bold
+\begin_inset Box Frameless
+position "t"
+hor_pos "c"
+has_inner_box 1
+inner_pos "t"
+use_parbox 0
+use_makebox 0
+width "100col%"
+special "none"
+height "1in"
+height_special "totalheight"
+thickness "0.4pt"
+separation "3pt"
+shadowsize "4pt"
+framecolor "black"
+backgroundcolor "none"
+status open
+
+\begin_layout Plain Layout
+
+\family typewriter
+\series bold
+@Documented @Retention(RUNTIME) @Target(ANNOTATION_TYPE) @interface
+\begin_inset Newline newline
+\end_inset
+
+Documented
+\end_layout
+
+\end_inset
+
+
+\family default
+\series default
+ Indica a javadoc que documente la anotación cuando la encuentre en la definició
+n de un tipo.
+
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+\series bold
+enum
+\begin_inset space ~
+\end_inset
+
+ElementType
+\family default
+\series default
+ Tipo de elemento del programa.
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+ANNOTATION_TYPE
+\family default
+ Anotación.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+CONSTRUCTOR
+\family default
+ Constructor.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+FIELD
+\family default
+ Atributo.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+LOCAL_VARIABLE
+\family default
+ Variable local.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+METHOD
+\family default
+ Método.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+PARAMETER
+\family default
+ Parámetro formal.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+TYPE
+\family default
+ Clase, interfaz, enumerado o anotación.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+TYPE_PARAMETER
+\family default
+ Parámetro de tipo.
+\end_layout
+
+\begin_layout Description
+...
+\end_layout
+
+\end_deeper
+\begin_layout Description
+
+\family typewriter
+\series bold
+\begin_inset Box Frameless
+position "t"
+hor_pos "c"
+has_inner_box 1
+inner_pos "t"
+use_parbox 0
+use_makebox 0
+width "100col%"
+special "none"
+height "1in"
+height_special "totalheight"
+thickness "0.4pt"
+separation "3pt"
+shadowsize "4pt"
+framecolor "black"
+backgroundcolor "none"
+status open
+
+\begin_layout Plain Layout
+
+\family typewriter
+\series bold
+@Documented @Retention(RUNTIME) @Target(ANNOTATION_TYPE) @interface
+\begin_inset Newline newline
+\end_inset
+
+Retention
+\end_layout
+
+\end_inset
+
+
+\family default
+\series default
+ Indica hasta cuándo se debe retener una anotación.
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+RetentionPolicy
+\begin_inset space ~
+\end_inset
+
+value
+\family default
+ Política de retención.
+\end_layout
+
+\end_deeper
+\begin_layout Description
+
+\family typewriter
+enum
+\begin_inset space ~
+\end_inset
+
+RetentionPolicy
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+RUNTIME
+\family default
+ La anotación se guarda en el fichero
+\family typewriter
+.class
+\family default
+ y la JVM la carga para ser leída con introspección.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+SOURCE
+\family default
+ El compilador descarta la anotación.
+\end_layout
+
+\end_deeper
+\begin_layout Description
+
+\family typewriter
+@Documented
+\begin_inset space ~
+\end_inset
+
+@Retention(RUNTIME)
+\begin_inset space ~
+\end_inset
+
+@Target(ANNOTATION_TYPE)
+\begin_inset space ~
+\end_inset
+
+@interface
+\begin_inset space ~
+\end_inset
+
+Target
+\family default
+ Indica los contextos en que se puede aplicar una anotación.
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+ElementType[]
+\begin_inset space ~
+\end_inset
+
+value
+\family default
+ Cuándo es la anotación aplicable.
+\end_layout
+
+\end_deeper
+\end_deeper
+\begin_layout Description
+
+\family typewriter
+package
+\begin_inset space ~
+\end_inset
+
+java.lang.reflect
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+class
+\begin_inset space ~
+\end_inset
+
+AccessibleObject
+\begin_inset space ~
+\end_inset
+
+implements
+\begin_inset space ~
+\end_inset
+
+AnnotatedElement
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+interface
+\begin_inset space ~
+\end_inset
+
+AnnotatedElement
+\end_layout
+
+\begin_deeper
+\begin_layout Description
+
+\family typewriter
+\begin_inset Box Frameless
+position "t"
+hor_pos "c"
+has_inner_box 1
+inner_pos "t"
+use_parbox 0
+use_makebox 0
+width "100col%"
+special "none"
+height "1in"
+height_special "totalheight"
+thickness "0.4pt"
+separation "3pt"
+shadowsize "4pt"
+framecolor "black"
+backgroundcolor "none"
+status open
+
+\begin_layout Plain Layout
+
+\family typewriter
+\series bold
+default boolean isAnnotationPresent(Class<? extends Annotation>)
+\end_layout
+
+\end_inset
+
+
+\family default
+ Indica si el elemento incluye alguna anotación del tipo especificado.
+\end_layout
+
+\begin_layout Description
+...
+\end_layout
+
+\end_deeper
+\end_deeper
+\begin_layout Standard
+\begin_inset Note Comment
+status open
+
+\begin_layout Section
+Inyección de dependencias
+\end_layout
+
+\begin_layout Plain Layout
+No entra en el examen.
+\end_layout
+
+\end_inset
+
+
+\end_layout
+
+\end_body
+\end_document