Java 7, conteúdo da recente palestra do Elliotte Rusty Harold

Olá

Java 7 and Beyond

[]s
Luca

Já?

Tô correndo atrás do 5.0 ainda…

Aff, que baderna, hehe.

Gostei do comentário:

Alguém poderia, por gentileza, me explicar como seriam essas Property Literals? vlw

objeto->X = 4

nossa, revivo meus momentos de programação C :slight_smile:

será que não poderia ser assim ?

public void set<PARAM>(<TYPE PARAM> X){ this.<PARAM> = X; // syntaxe alternativa: this.${PARAM} = X; } public <TYPE PARAM> get<PARAM>(){ return <PARAM>; }

Poderia ser controlado via annotations a permissão ou restrição a parâmetros não publicos.

Basicamente o que hoje em dia você faz com isto:

class Point {
    private int x;
    public void setX (int pX) { x = pX; }
    public int getX () { return x; }
}
...
Point p = new Point(), q = new Point();
p.setX (q.getX());

você agora faria com isto:

class Point {
    private int property x;
    public void setX (int pX) { x = pX; }
    public int getX () { return x; }
}
...
Point p = new Point(), q = new Point();
p.x = q.x;
// sintaxes alternativas: p->x = q->x;
//  ou então p#x = q#x;

Ah, valew thingol.

Basicamente o que hoje em dia você faz com isto:

class Point {
    private int x;
    public void setX (int pX) { x = pX; }
    public int getX () { return x; }
}
...
Point p = new Point(), q = new Point();
p.setX (q.getX());

você agora faria com isto:

class Point {
    private int property x;
    public void setX (int pX) { x = pX; }
    public int getX () { return x; }
}
...
Point p = new Point(), q = new Point();
p.x = q.x;
// sintaxes alternativas: p->x = q->x;
//  ou então p#x = q#x;

[/quote]

fazendo isso p.x = q.x;

o p.setX e q.getX estão sendo chamados de forma implicita?

mchiareli wrote:

Acho que não por que se for assim coisas que já existem iriam funcionar diferente.

Acho que a classe ficaria.

antes:

class Point
{
     private int x;
     public void setX (int pX) { x = pX; }
     public int getX () { return x; }
     
     public static void main(String [] args){
          Point p = new Point();
          p.setX(12);
          System.out.println( p.get() );
     }
 }

depois:

class Point
{
     private int property x;
     
     public static void main(String [] args){
          Point p = new Point();
          p.setX(12);
          System.out.println( p.get() );
     }
 }

Acho que no caso o compilador ao ver a palavra chave property iria criar um getter e um setter padrão, isto se não não existir um já.

Obrigado Luca!

Em um geral, nota-se o esforço em reduzir a necessidade de código redundante, que poderia ser representado de outra forma, extensão da NIO, Swing, etc…

Só a extensão das Anotações que eu achei forçar a barra, digo quando se configura vários “atributos” da anotação… Vide, por exemplo, @MessageDriven com aqueles @ActivationConfigProperty… Porém, aquelas mais sucintas cai muito bem…