há algum canal de comunicação que eu posso usar para dar sugestões p/ a linguagem java?
poxa, um recurso mto interessante q tem no delphi(n sei se tem em alguma outra linguagem, mas java q eu saiba, nao tem[se tiver, alguem me dá um toque
]): as tais das propriedades
tipo, eu tenho a classe:
public class JTextField extends .............. implements ........... {
private String texto;
....
public void setText(String texto) {
this.texto = texto;
}
public String getText() {
return texto;
}
}
JTextField textField1 = new JTextField();
para alterar o texto q aparece na tela, eu usaria textField1.setText(…);
e para obter o texto, usaria textField1.getText(), certo?
fazendo uma analogia às propriedades(n sei o nome tecnico da coisa, eu chamo de propriedade mesmo, pq eh esse o nome q se usa pra fazer a declaração <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/w.pngink.png?v=9" title=":wink:" class="emoji" alt=":wink:"> )
public class JTextField extends .............. implements ........... {
private String texto;
....
private void setText(String texto) {
this.texto = texto;
}
private String getText() {
return texto;
}
public property String text read getText write setText; /* posso omitir o campo read ou write, para fazer a propriedade read-only, write-only, oq eu quiser */
}
daí eu usaria simplesmente textField1.text tanto para leitura quanto para escrita. Apesar de ser mto parecido visualmente, isso em nada tem a ver com acessar diretamente uma suposta variavel de instancia chamada text, pois internamente, oque seria usado continuaria sendo setText() e getText(), sendo q estes poderiam ser declarados como public mesmo, para manter compatibilidade com código existente.
acho mto mais elegante acessar os valores da minha classe dessa forma, doque usando os famosos getXXX() e setXXX()
outra coisa q faz falta é a possibilidade de escolher entre passar um argumento a um método por valor ou por referencia. sei que tipos primitivos são passados por valor, e vetores e classes por referencia, e que há formas de contornar a situação, caso eu queria passar um tipo primitivo por referencia, basta passa-lo dentro de um vetor, já que o vetor em sí é passado por referencia.
mas seria muito mais simples se pudesse fazer algo como
public void inc(var int num) { /* aqui o argumento num SEMPRE seria passado por referencia */
++num;
}
ou entao:
public void inc(int num) {
++num;
}
e chama-lo forçando a passagem por referencia:
inc(var dia); /* onde dia é uma variavel qualquer cujo valor eu queira incrementar em um (eu sei que bastaria um ++dia, mas eu só quero exemplificar a minha ideia) */
ou o oposto:
public void umNomeQualquer(val int[] idades) {
...
}
apesar de o argumento ser um vetor, a passagem sempre seria por valor… se bem q isto causaria uma perda de performance, visto que ao chamar o método, teria q ser criada uma copia do vetor e todos os seus elementos em uma outra posição da memoria(e é esse o motivo para q vetores sejam passados por referencia), mas ficaria a criterio do programador saber quando isso será util e quando será desvantajoso(existe essa palavra?)
aproveitando, oque voces acham dessas ideias? o lance da passagem por valor e referencia eu já vi sendo comentado aqui, mas o outro eu nunca vi…
) Os criadores de Java preferiram não usar passagem por referência para evitar erros dos programadores. Não erros difíceis de rastrear. Atenção: os arrays e objetos também são passados por valor!!