Contenido de certificación
Buscar
Social
Ofertas laborales ES

Entries in OCJP 8 (3)

domingo
may212017

Gestión de excepciones.

¿Compilaría y ejecutaría el siguiente código? Si no compila, ¿por qué razón? Si ejecuta, ¿cuál sería la salida?

01.package pruebasExcepciones;
02. 
03.public class Pruebas {
04. 
05.    public static void pruebasExcepciones() {
06. 
07.        try {
08. 
09.            System.out.println(" 1) try ");
10.            lanzaExcepcion();
11. 
12.        } catch (Exception e) {
13. 
14.            System.out.println(" 2) catch ");
15.            throw e;
16. 
17.        } finally {
18.            System.out.println(" 3) finnaly ");
19.        }
20. 
21.    }
22. 
23.    public static void main(String[] args) {
24. 
25.        try {
26.            pruebasExcepciones();
27.        } catch (Exception e) {
28.            // TODO Auto-generated catch block
29.            e.printStackTrace();
30.        }
31. 
32.        System.out.println(" 4) main ");
33. 
34.    }
35. 
36.    public static void lanzaExcepcion() {
37.        throw new ArrayIndexOutOfBoundsException();
38.    }
39. 
40.}
miércoles
abr082015

Lambda Quick Start

Buenos días, dejamos un código explicativo sobre Lambda, nueva característica de Java 8.

001.package lambda;
002. 
003.import java.awt.event.ActionEvent;
004.import java.awt.event.ActionListener;
005.import java.util.ArrayList;
006.import java.util.Collections;
007.import java.util.Comparator;
008.import java.util.List;
009.import javax.swing.JButton;
010. 
011./**
012. * Clase que utilizaremos en la parte de métodos de comparación con Lambda
013. *
014. * @author jaimecl
015. *
016. */
017.public class Persona {
018. 
019.    private String surName;
020. 
021.    public Persona(String surName) {
022.        super();
023.        this.surName = surName;
024.    }
025. 
026.    public String getSurName() {
027.        return surName;
028.    }
029. 
030.    public void setSurName(String surName) {
031.        this.surName = surName;
032.    }
033. 
034.    /* Método de impresión de valores */
035.    public void printName() {
036.        System.out.println("surName=" + surName + "]");
037.    }
038. 
039.    /* Método que creará una lista corta de Personas, a modo de datos de ejemplo */
040.    private static List<persona> createShortList() {
041.        ArrayList<persona> lista = new ArrayList<persona>();
042.        lista.add(new Persona("Carmona"));
043.        lista.add(new Persona("Pérez"));
044.        return lista;
045. 
046.    }
047. 
048.    /**
049.     * Método principal
050.     *
051.     * @param args
052.     */
053.    public static void main(String args) {
054. 
055.        /*
056.         * Empezamos con clases anónimas: utilizadas en un sólo punto del código
057.         * No hay necesidad de tener que definir una clase única que sea
058.         * referenciada sólo una vez
059.         */
060.        JButton testButton = new JButton("Test Button");
061.        testButton.addActionListener(new ActionListener() {
062.            public void actionPerformed(ActionEvent ae) {
063.                System.out.println("Click Detected by Anon Class");
064.            }
065.        });
066. 
067.        /*
068.         * Java8 define como interfaz funcional aquella clase que define un sólo
069.         * método. Las expresiones Lambda pueden ser aplicadas sobre dichas
070.         * interfaces La sintaxis es la siguiente argumento -> cuerpo. (int x,
071.         * int y) -> x + y
072.         *
073.         * () -> 42
074.         *
075.         * (String s) -> { System.out.println(s); }
076.         */
077. 
078.        /* A continuación, vemos cómo definir Lambda Runnable */
079. 
080.        /* Manera antigua, con una clase anónima */
081.        new Runnable() {
082.            @Override
083.            public void run() {
084.                System.out.println("JavaHispaneros, ¡manera anónima!");
085.            }
086.        }.run();
087. 
088.        // Con Lambda, la interfaz runnable tiene un sólo método, por lo tanto,
089.        // podemos redefinirlo de la siguiente manera.
090.        Runnable r2 = () -> System.out
091.                .println("JavaHispaneros, ¡esto es Lambda!");
092. 
093.        /* A continuación, vemos un ejemplo de ordenación de listas */
094.        List<persona> personList = Persona.createShortList();
095. 
096.        /*
097.         * Ordenación con clases anónimas. Dentro del método sort, que espera
098.         * una interfaz de tipo Comparator, hacemos una redefinición
099.         */
100. 
101.        Collections.sort(personList, new Comparator<persona>() {
102.            public int compare(Persona p1, Persona p2) {
103.                return p1.getSurName().compareTo(p2.getSurName());
104.            }
105.        });
106. 
107.        // Ordenación ascendente, en este caso, haciendo uso de expresiones
108.        // lambda
109. 
110.        /*
111.         * El método sort de Collections espera un único método, con dos
112.         * parámetros. Por lo tanto, utilizamos la sintaxis lambda para definir
113.         * el método de comparación
114.         */
115.        Collections.sort(personList, (Persona p1, Persona p2) -> p1
116.                .getSurName().compareTo(p2.getSurName()));
117. 
118.        // Mismo caso, ejerciendo la ordenación descendente.
119.        Collections.sort(personList,
120.                (p1, p2) -> p2.getSurName().compareTo(p1.getSurName()));
121. 
122.        /* Otro caso para listeners */
123.        JButton botonMetodoAnonimo = new JButton("Botón con método anónimo");
124.        botonMetodoAnonimo.addActionListener(new ActionListener() {
125.            @Override
126.            public void actionPerformed(ActionEvent ae) {
127.                System.out.println("Click detectado por clase anónima");
128.            }
129.        });
130. 
131.        /*
132.         * De nuevo, vemos que addActionListener acepta una clase que implemente
133.         * la interfaz listener, que define un método único, por lo tanto,
134.         * acepta expresiones lambda Recordamos la sintaxis: nombre de variable
135.         * en parámetro -> acción a realizar Choca ver que en la parte de
136.         * parámetros no existe el tipo de parámetro que es
137.         */
138. 
139.        JButton botonMetodoLambda = new JButton("Botón con método lambda");
140.        botonMetodoLambda.addActionListener(e -> System.out
141.                .println("Click Detected by Lambda Listner"));
142. 
143.    }
144.}
145. 
146. 
147.</persona></persona></persona></persona></persona>
sábado
feb072015

Definición de métodos

Que tal compañer@s. ¿Sabéis indicar si el siguiente código compila, y si no es el caso, por qué motivo? ¿Qué lineas se podrían eliminar para que compilase?

01.package scjp;
02. 
03.public class DefinicionDeMetodos {
04. 
05.    private void sayHello() {
06.         
07.    }
08.     
09.    private void sayHello(int a) {
10.         
11.    }
12.     
13.    public void sayHello() {
14.         
15.    }
16. 
17.    public void sayHello(int a) {
18.         
19.    }
20.     
21.    private void sayHello() throws Exception{
22.         
23.    }
24.     
25.    private void sayHello(int a) throws Exception{
26.         
27.    }
28. 
29.}

Click to read more ...