Olah lista,

    Como curiosidade, essa discussao eh ateh interessante...
    Na verdade, como o Rogerio jah havia comentado anteriormente, o q
acontece eh q existe diferenca entre "palavra reservada" e "identificador".
O compilador soh indica um erro quando uma palavra reservada eh utilizada
como nome de identificador. Quando existem nomes de identificadores iguais
para referencias diferentes, o compilador resolve isso pelo escopo.
    O nome desse conceito, nao lembro direito, mas acho q eh "shadowing".
Isso permite q o codigo abaixo seja valido, e comumente utilizado:

class X {
   private int a;
   public X(int a) {
      this.a = a;
   }
}

    Observe q existem 2 variavies diferentes, mas referenciadas pelo mesmo
nome. Acontece q a variavel mais "interna" ao escopo eh sempre a primeira a
ser referenciada, porque ela faz "sombra" ("shadow") na outra. Observem q
para refenciar o atributo "a", foi necessario usar "this.a".
    Da mesma forma, vc pode fazer:

Bar Object = new Bar();

    No entanto, boas praticas de programacao em java, aconselham a usar
nomes de classe com inicial em maiuscula e nomes de instancias com inicial
em minuscula... assim:

Bar object = new Bar();

    Isso jah ajudaria a diferenciar a Classe "Object" da instancia "object".
Ainda assim pode ser confuso do ponto de vista "humano". E aih, eh como o
Sven disse... use nomes mais significativos e diferentes dos utilizados
pelas classes da API do java, para evitar dores de cabeca na hora de debugar
codigo...

    []s
    Edson

 ---
 Edson Tirelli
 System Analyst
 Microsoft Certified Professional
 Sun Certified Programmer for Java 2 Platform
 try Automatos - The Automatic MSP
 @ www.automatos.com


-----Mensagem original-----
De: Roberto Tatemoto [mailto:[EMAIL PROTECTED]]
Enviada em: sexta-feira, 8 de junho de 2001 11:32
Para: [EMAIL PROTECTED]
Assunto: Re: [java-list] Estranho que isso compila


Isso também compila. Nos testes que eu fiz, qualquer nome de classe pode se
tornar nome de variável. Isso não estaria dentro do conceito de
encapsulamento?
----------------------------------------------------------------------------
------

public class Foo {
 public Foo() {
  Bar Integer = new Bar();
   System.out.println(Integer.parseInt());
 }

 public static void main(String[] args) {
  Foo foo1 = new Foo();
 }
}

class Bar {
 public Bar() {}

 public String parseInt() {
  return "Helloowwzz... Que loucura !!!";
 }
}
----------------------------------------------------------------------------
-------------------------------


Roberto Tatemoto
Na minha opinião isso não deveria compilar ja que Object é uma das classes
base da Java (Extensão na java.lang). Assim não teria muito diferença de:
Bar Object = new Bar();
ou
String String = new String();


------------------------------ LISTA SOUJAVA ---------------------------- 
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
para sair da lista: envie email para [EMAIL PROTECTED] 
-------------------------------------------------------------------------

Responder a