Existe "With" em java?

20 respostas
C

Blz pessoal?
Queria saber se existe um comando “with” no java, que é usado em algumas outras linguagens que seria mais ou menos isso

With MinhaClasse.Pessoa

    System.out.println(.nome);
    System.out.println(.idade);
    System.out.println(.peso);

endwith

Deu pra entender?

Valew agradeço desde já a atenção…

20 Respostas

jayBean

[USUARIO DE DELPHI DETECTED]

brother, já pesquisei e nunca vi…
talvez alguém mais experiente possa lhe dar uma resposta absoluta.

abraço!

skalinichenko

Ótima! haha

Mas utilizo também em VB.Net.
Realmente não existe, mas bem que deveria.
Quebra “mó galho”, quando precisamos setar váááárias propriedades, de determinados objetos.
Mas pode ser feito, de outra forma.
Pesquise sobre o Pattern VO (Value Object) ou Transfer Object.
Segundo dizem, o VO foi descontinuado :shock:

Flw!

peczenyj

Vc pode criar interfaces fluentes:

EmailService.to("[email removido]") .from("[email removido]") .subject("compre viagra") .message("eh baratinho") .send();

dionat4n

A resposta é simples:

Não.

Mas pode-se utilizar this para representar o objeto que será instanciado daquela classe. Por exemplo:
class Exemplo () {

    private nome;
    private idade;
    private peso;

//... outros metodos que alteram os dados ...

    void printExemplo() {
        System.out.println(this.nome);
        System.out.println(this.idade);
        System.out.println(this.peso);
    }

}
Marky.Vasconcelos

Apesar que esse exemplo não faz muito sentido dentro da classe. Voce pode usar diretamente sem o this que já é quase o efeito com o WITH.

class Exemplo () {

    private nome;
    private idade;
    private peso;

//... outros metodos que alteram os dados ...

    void printExemplo() {
        System.out.println(nome);
        System.out.println(idade);
        System.out.println(peso);
    }

}
dionat4n

Onde vai se usar this se não for dentro da classe?

Eu utilizo sempre this, é mais seguro pois diminui os erros de copiar/colar futuros. E ao mesmo tempo que aumenta a legibilidade do código, polui um pouco com uma palavra a mais. Para mim, é uma boa prática usar o this.

Marky.Vasconcelos

Mas o que ele quer fazer pode ser dentro da classe ou não e o this é opcional e não utilizavel fora da classe.
Eu exagerei falando que não tinha sentido mas vai de cada um.

S
Sei que não foi perguntado, mas a título de curiosidade, em groovy é possível usar o with. Seria como abaixo:
class Pessoa {
    String nome
    int peso
    int idade
}

p = new Pessoa()

p.with {
    nome = 'Jose'
    peso = 80
    idade = 30
    println nome
    println idade
    println peso
    
    //with dentro to with
    nome.with {
        println "tamanho da string nome: ${size()}"
    }
}
//fora do with precisamos utilizar a variável "p".
println p.nome
println p.idade
println p.peso
dionat4n

Já fui programador Delphi há anos atrás e with não fica bom para códigos complexos. Ou seja, with fica bom para blocos de código que caibam numa tela, que seja visualizado por completo.

Numa opinião pessoal, não vejo muita utilidade, pois em códigos simples não é tão necessário, e em códigos complexos ele acaba dificultando pelo fato de se misturar com outros objetos. Então eu prevenia o uso de with.

diego2005

dionat4n:
Já fui programador Delphi há anos atrás e with não fica bom para códigos complexos. Ou seja, with fica bom para blocos de código que caibam numa tela, que seja visualizado por completo.

Numa opinião pessoal, não vejo muita utilidade, pois em códigos simples não é tão necessário, e em códigos complexos ele acaba dificultando pelo fato de se misturar com outros objetos. Então eu prevenia o uso de with.

Com certeza. Hoje trabalho com Delphi, e quando pego um código cheio de withs pra debugar, é uma tristeza só, dá o maior trabalho. Na minha opinião não compensa economizar digitação em troca de legibilidade.

E quando se usa o with com mais de um objeto (já mexi em código assim)??? Ai senta e chora…

J

exatamente rsrsrs

Java não deve ter with para que seja menos uma maneira dos programadores escreverem codigo macarronico …

já basta quele tal de

:String s = (1==1)?"sim":"não";

diga não ao codigo macarronico … vamos nos unir, saiba que o código que vc escreve hoje, pode ser um amigo do peito seu, aki do guj que vai um dia tentar entender … não faça isso XD

legibilidade já!

ahuahuahauhauahu ( MEU NOME É LULAAAA )

C

Bom galera, obrigado pela ajuda e quanto ao “[USUARIO DE DELPHI DETECTED]” é meio dificl pois nunca trabalhei com DELPHI, atualmente programo em Microsoft visual foxpro que tambem possue o recurso do “With”. Obrigado pelas respostas. Valew!

celso.martins

dionat4n:
Já fui programador Delphi há anos atrás e with não fica bom para códigos complexos. Ou seja, with fica bom para blocos de código que caibam numa tela, que seja visualizado por completo.

Numa opinião pessoal, não vejo muita utilidade, pois em códigos simples não é tão necessário, e em códigos complexos ele acaba dificultando pelo fato de se misturar com outros objetos. Então eu prevenia o uso de with.

Perfeito! Também não usava with quando programava em Delphi. Acredito que detone a clareza do código.

MrDataFlex

javando:

:String s = (1==1)?"sim":"não";

A problema é a condição imbecil ou os operadores ternários ?

Marky.Vasconcelos

javando:
exatamente rsrsrs

Java não deve ter with para que seja menos uma maneira dos programadores escreverem codigo macarronico …

já basta quele tal de

:String s = (1==1)?"sim":"não";

diga não ao codigo macarronico … vamos nos unir, saiba que o código que vc escreve hoje, pode ser um amigo do peito seu, aki do guj que vai um dia tentar entender … não faça isso XD

legibilidade já!

ahuahuahauhauahu ( MEU NOME É LULAAAA )

Cara… nao acho nada macarronico esse código.

Veja esse meu código e veja se voce acha assim.

double fator = 1;
fator += isRetorno()? .5 : 0;
fator += isForaSP()? .5 : 0;
fator += isForaHorarioComercial()? .5 : 0;

Ou voce acha isso mais elegante.

double fator = 1;
if(isRetorno())
fator += .5;
if(isForaSP())
fator += .5;
if(isForaHorarioComercial())
fator +=  .5;

Fora que nao precisei de elses aqui mas acho mais facil usar o operador ternario.

MrDataFlex

tem gente que não sabe o que significa codigo macarronico e pq ele é chamado assim…

T

Decerto não é por causa deste artigo do Guy Steele (um dos autores da especificação do Java):

Macaroni is better than spaghetti

Para melhores explicações, vejam este artigo: Spaghetti Code

J

MrDataFlex:
javando:

:String s = (1==1)?"sim":"não";

A problema é a condição imbecil ou os operadores ternários ?

é … não tinha pensado nisso … mas … acho que são os operadores ternários ahuahuhauhaau

J

Mark_Ameba:
javando:
exatamente rsrsrs

Java não deve ter with para que seja menos uma maneira dos programadores escreverem codigo macarronico …

já basta quele tal de

:String s = (1==1)?"sim":"não";

diga não ao codigo macarronico … vamos nos unir, saiba que o código que vc escreve hoje, pode ser um amigo do peito seu, aki do guj que vai um dia tentar entender … não faça isso XD

legibilidade já!

ahuahuahauhauahu ( MEU NOME É LULAAAA )

Cara… nao acho nada macarronico esse código.

Veja esse meu código e veja se voce acha assim.

double fator = 1;
fator += isRetorno()? .5 : 0;
fator += isForaSP()? .5 : 0;
fator += isForaHorarioComercial()? .5 : 0;

Ou voce acha isso mais elegante.

double fator = 1;
if(isRetorno())
fator += .5;
if(isForaSP())
fator += .5;
if(isForaHorarioComercial())
fator +=  .5;

Fora que nao precisei de elses aqui mas acho mais facil usar o operador ternario.

é claro que os operadores ternários tem a sua aplicação, caso contrário não estariam na linguagem.
mas é um recurso que permite que o usuario escreva código pouco legivel. Quem botou esse recurso na linguagem, confiou no bom senso do programador, e o que menos o java faz é confiar no bom senso rsrsrs. o caso dos operadores ternarios foi uma excessão.

dionat4n

Eu utilizo o operador ternário apenas em pequenas expressões… Ao meu ver, aumenta a legibilidade nesse caso.

Qual a opinião de vocês, qual o melhor?

String s = "Minha velocidade é " + ( speed > 0 ? "positiva ou nula.": "negativa.");ouString s = "Minha velocidade é "; if ( speed > 0 ) { s += "positiva ou nula." } else { s += "negativa." }

Criado 24 de maio de 2009
Ultima resposta 26 de mai. de 2009
Respostas 20
Participantes 12