Que Métodos/Classes vc acha que o JAVA ja deveria ter?

[quote=Priuli]Este faz tempo que queria nativo na linguagem, de uma maneira simples, tipo:

"123456".leftPad("0",5) //00000123456 "123456".rightPad("0",5) //12345600000 [/quote]

Boa tambem…!!!

hum, acho q vc ta confundindo as coisas, ñ me parece uma boa misturar conversão com formatação, e ambas estão mto bem implementadas

em lua tem um sistema parecido, porém são menos operadores possiveis, mas por questão de gosto, eu prefiro as regras de sobrecarga de operadores do c++, mto parecido com o mostrado pelo fredferrao na linguagem scala - sintaxe diferente, mas lógica mto similar

lembrei de uma coisa q eu já senti falta em java, foi a tipagem padrão de um tipo genérico, e.g.:

class Classe<T = String> { ... }

se vc nao tipar o objeto ao instanciá-lo, então T será do tipo String e ñ Object. é algo q ñ fez mta falta, nem faz, mas pode ser interessante em alguns poucos casos

t+

poderia existir um metodo de teste tambem …
que preenchesse variareis e apontasse possíveis erros de lógica tipo um teste de caixa branca ou preta estou na duvida de qual e…

tipo

[code]Test(return resposta){

// codigo fonte aqui …

}[/code]

pra testar linhas de código … ficaria mais fácil de achar os erros e de testar programas

Faltou o método clone estar implementado. :twisted:

O problema do Java é o mesmo de qualquer outra linguagem derivada do Algol (incluindo C++, Ruby, Python, etc). A sintaxe é fixa, e você é limitado pelo que o criador achou que seria útil. Geralmente quando algum usuário de Ruby cita “metaprogramação” ele não está se referindo a definir novas palavras reservadas, mas apenas a poder alterar objetos em tempo de execução, adicionando-se novos métodos e tal. O que adiciona um nível de flexibilidade a um custo maior em tempo de execução e de segurança.

Talvez haja alguma forma de se tratar em um linguagem como Java a possibilidade de se incluir novas construções sintáticas, como por exemplo receber uma árvore sintática e retornar outra que será transformada em código, mas eu não conheço. Eu não consigo imaginar como isso seria “fácil” do ponto de vista do desenvolvedor.

Linguagens derivadas do Lisp permitem esse tipo de personalização porque o próprio código já é uma árvore. Portanto transformar árvores em tempo de compilação é bem simples. Em termos práticos não há limites para o que o desenvolvedor possa fazer, pois ele pode extender a linguagem como bem entender.

Por exemplo, em Lisp se você quisesse integrar AOP bastaria extender a linguagem para utilizá-la. A mesma coisa se quisesse uma sintaxe especial para operações com DB ou qualquer outra coisa. A linguagem não te limita.[/quote]

O preprocessador da linguagem c ou da c++ te permite fazer isso. Você pode construir qualquer palavra chave com ele.

Nesse exemplo existe a implementação de um “foreach” primitivo.
http://www.cakoose.com/wiki/c_preprocessor_abuse

A linguagem c e a c++ são linguagens de sistema(linguagens para criar compiladores). Existe uma moderna que também é de sistema, a linguagem d.[/quote]

De uma forma primitiva, sim. Mas Lisp é muito mais poderoso. O pré-processador do C é nada mais do que um substituidor de texto, pura e simplesmente.

O pré-processador opera em nível de string de caracteres, um sistema Lisp opera em nível de representação. A principal diferença é que um pré-processador é muito mais limitado e tende tornar o código ilegível, em Lisp as macros são simples funções assim como quaisquer outras, dando assim maior flexibilidade sem afetar a legibilidade.

Comparar um pré-processador com um sistema Lisp é como comparar uma bicicleta com uma moto. Ambos são meios de transporte, mas há uma diferença enorme entre eles.

Eee isso ai …!!!

A única coisa que eu queria a mais no java é o operador ?
os cara fazem 01239890128390182390123198203 jsr para novas coisas e eu continuo tendo que fazer

  if(algumaCoisa != null && algumaCoisa.algo())
    //mais coisas aqui

muito mais simples

  if(algumaCoisa?.algo())
    //mais coisas aqui

infelizmente não foi aprovado :frowning:

Como já falei aqui outras vezes, ficaria feliz com um modificador “project” onde o método ou classe seria pública somente dentro do projeto/jar.

Me incomoda muito quando desenvolvo/adiciono um framework em um projeto e posso importar classes das quais nem deveria saber a existência. O public do java é realmente público e os modificadores default e protected se limitam a apenas o pacote.

Como no geral num projeto não dá pra deixar todas as classes em um pacote só, pois fica uma “zona”, acabamos usando exageradamente o public.

[quote=kiq095]poderia existir um metodo de teste tambem …
que preenchesse variareis e apontasse possíveis erros de lógica tipo um teste de caixa branca ou preta estou na duvida de qual e…

tipo

[code]Test(return resposta){

// codigo fonte aqui …

}[/code]

pra testar linhas de código … ficaria mais fácil de achar os erros e de testar programas[/quote]

JUNIT!?

ñ sou contra mas tb ñ sou a favor, penso sobre isso o mesmo que penso sobre o operador + e =+ na classe String

uma coisa interessante q me lembrei agora, seria a propagação do atributo final, ele só vale para a variável que é declarada, e quando se trata de um objeto este pode ser internamente modificado, um exemplo classico é um vetor de zeros ou uma matriz identidade

public static final Vetor ZERO = ...
public static final Matrz IDENTIDADE = ...

tanto a classe Vetor quanto Matriz são mutavels, tem getters e setters além de operações matematicas que as alteram, claro q ninguem vai querer “estragar” a biblioteca alterando os valores de Vetor.ZERO e Matrz.IDENTIDADE, mas fica dependendo do senso de noçao de quem futuramente irá usar

a ideia do atributo project, encaixa na mesma ideia acima, mas sei lá tenho uma certa resistencia, mas é uma questao de conceito, por exemplo eu tb ñ gosto de sermos obrigados a checar algumas exceções, mas td bem, dá pra conviver com isso

o titulo do topico pergunta quais metodos e classes, ja estamos falando de recursos e (possiveis) melhorias em geral hehe…

[quote=Felagund]A única coisa que eu queria a mais no java é o operador ?
os cara fazem 01239890128390182390123198203 jsr para novas coisas e eu continuo tendo que fazer

  if(algumaCoisa != null && algumaCoisa.algo())
    //mais coisas aqui

muito mais simples

  if(algumaCoisa?.algo())
    //mais coisas aqui

infelizmente não foi aprovado :([/quote]

Uai, mas isso aqui já não funciona?

x>y? System.out.println(x);

edit: Entendi o que você quis dizer com a outra expressão. Ignora meu post.