IDENTIFIER EXPECTED wtf?

galera esse identifier expected vive me perseguindo, alguém me ajuda?

[code]public class Time2Test {

  public static void main(String[] args) {
    Time2 t1 = new Time2();             //00:00:00
    Time2 t2 = new Time2( 2 );          //02:00:00
    Time2 t3 = new Time2( 21, 34);      //21:34:00
    Time2 t4 = new Time2( 12, 25, 42);  //12:25:42
    Time2 t5 = new Time2( 27, 74, 99);  //00:00:00
    Time2 t6 = new Time2( t4 );         //12:25:42
}
Time2Test time2 = new Time2Test();
this.showTime("t1", t1); // AQUI Q TA DANDO IDENT EXPECT

public void showTime(String tXS, Time2 tX) {
    System.out.println( "Constructed with:" );
    System.out.println( tXS );
    System.out.println( tX.toUniversalString());
    System.out.println( tX.toString());
}

}[/code]

na linha this.showTime ta dando esse erro… ja tentei criar nova instancia de Time2Test e tambem nao rolou… alguém sabe me explicar?
thanks

  1. vc deve fazer os testes dentro dos métodos.
  2. vc só usa o this dentro de métodos que não sejam static. Por que ? porque o this é uma referência a uma instancia, e metodos static não precisam de uma instancia.

Veja este exemplo:

[code]public class Time2Test {

 public static void main(String[] args) {
     Time2 t1 = new Time2( 27, 74, 99);  //00:00:00

     Time2Test time2 = new Time2Test(); // instancia a classe

	 time2.showTime("t1", t1); // chama metodo da instancia

	 time2.showTime2("t1", t1); // chama metodo da instancia

	 time2.showTime3("t1", t1);// chama metodo da instancia

	 Time2Test.showTimeStatic("t1", t1); // chama static!

	 showTimeStatic2("t1", t1);// chama static!

	 showTimeStatic3("t1", t1);// chama static!
 }

 public void showTime(String tXS, Time2 tX) {
     System.out.println( "Constructed with:" );
     System.out.println( tXS );
     System.out.println( tX.toString());
 }

 public void showTime2(String tXS, Time2 tX) {
 	 this.showTime(tXS,tX);
 }

 public void showTime3(String tXS, Time2 tX) {
 	 showTime(tXS,tX);
 }

 public static void showTimeStatic(String tXS, Time2 tX) {
     System.out.println( "Constructed with:" );
     System.out.println( tXS );
     System.out.println( tX.toString());
 }

 public static void showTimeStatic2(String tXS, Time2 tX) {
     Time2Test.showTimeStatic(tXS,tX);
 }

 public static void showTimeStatic3(String tXS, Time2 tX) {
     showTimeStatic(tXS,tX);
 }

}

class Time2{

private int HH,MM,SS;

public Time2(int a, int b, int c){
	this.HH = a;
	this.MM = b;
	this.SS = c;
}

public String toString(){
	return HH + ":" + MM + ":" + SS;
}

}[/code]

Veja a diferença. Se vc chama um metodo de static, ele não está associado a nenhuma instância da classe. Vc pode chama-lo assim

Nome_da_Classe.método()

ex: Math.abs(-1)

Se vc está dentro da propria classe, um método static pode chamar outro omitindo o nome da classe.

Agora se não é static, vc precisa de uma referência a uma instancia.

Nome_da_Instância.método()

Um métodos não-static pode chamar outro da mesma classe sem informar uma instância. se vc instancia a sua classe em outra classe ou em um método estático com o main, então vc há de convir que nem sempre vc sabe o nome da instancia! por isso existe a palavra this. ela é uma referência à instancia ‘atual’ ou ‘corrente’, se vc quiser pensar assim.

Faz sentido usar this em um metodo estatico ? não, pois não há uma instancia corrente.

Faz sentido usar o this para invocar um metodo estático ? não é preciso, pois basta usar o nome da classe -esse vc sabe!

Como saber que tipo de método eu uso: depende do seu modelo.

Vc tem que pensar assim: Por que vc tem uma instancia?

toString() ou toUniversalFormatOfDataAndTime() operam sobre os atributos da classe, cada instancia tem um grupo de atributos diferentes, então faz sentido eles não serem estáticos.

print_diff_times(Time2 a,Time2 b) é um metodo hipotetico que recebe 2 objetos time e imprime a diferença entre eles. não precisa de nenhum atributo pois recebe amos os objetos como parâmetros, pode ser static!

print_diff_times(Time2 a) é a mesma coisa, entretanto pega a diferença dos valores do objeto que invoca este método e o que vem por parâmetro. Não pode ser static.

captou a malandragem?

mais uma vez sensacional peczenyj!
abrax and thanks a lot