Cast em Null? RegularExpression.java

4 respostas
Tiago_Farias

Ae galera!

Tava olhando o código da classe RegularExpression dentro do rt.jar e me deparei com um ‘(Match)null’. Assim:

public boolean matches(char[] target, int start, int end) { return this.matches(target, start, end, (Match)null); }

Gostaria de saber qual o valor semântico disso(se é que existe algum) e tb a razão provável pela qual o programador/designer da classe decidiu fazer algo assim.

[]s.

4 Respostas

maschiojv

Pode ser que além do método matches(char[], int, int, Match) exista um com a assinatura quase igual, como matches(char[], int, int, String) por exemplo. Como ele está passando null, o compilador não sabe qual dos dois métodos você quer usar, dai o cast, pra dizer que vc quer usar o que recebe Match.

Tiago_Farias

Boa explicação. Mas não tem outro método matches com a mesma assinatura e outro tipo no último param. Mas a resposta foi realmente boa. Tipo, apesar de não existir um matches assim AGORA, pode existir no futuro. Daí a preocupação do programador em deixar o código mais funcional pra alguma utilização no futuro(até mesmo por herança…).

Mas acho q eh isso mesmo…

Vlw!

thiago.correa

Como assim não existe um método matches overloaded???!

----> public boolean matches(char[] target, int start, int end)

ele deve estar usando o (Macthes) null para o compilador não pensar que é uma chamada recursiva! Conforme a bela explicação do colega maschiojv

Tiago_Farias

Não foi oq eu quis dizer. EXISTE um matches overloaded, mas não com 4 parâmetros e o último não sendo do tipo Match. Foi oq o colega mencionou como sugestão. =]

Criado 12 de fevereiro de 2009
Ultima resposta 12 de fev. de 2009
Respostas 4
Participantes 3