Como executar um método DA INSTÂNCIA de uma classe via Reflection

Pessoal, eu tenho as seguintes classes

Uma classe abstrata

[code]
import java.lang.reflect.Field;

public abstract class ClasseAbstrata {

public abstract void metodo1();

public void metodo2() {
	try {
		Class cls = Class.forName(this.getClass().getName());
		Field fieldlist[] = cls.getDeclaredFields();

		for (int i = 0; i < fieldlist.length; i++) {

			Field fld = fieldlist[i];

			if (fld.getType() == this.getClass()) {
				//TODO como chamar o método "metodo1" da instância concreta2 que é do tipo ClasseAbstrata
			}

		}
	} catch (ClassNotFoundException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

}[/code]

Uma classe concreta que herda da abstrata

public class ClasseConcreta1 extends ClasseAbstrata{

	private List<ClasseConcreta2> concreta2 = new ArrayList<>();
	private String valor1;
	
	@Override
	public void metodo1() {
		metodo2();		
	}

	public List<ClasseConcreta2> getConcreta2() {
		return concreta2;
	}

	public void setConcreta2(List<ClasseConcreta2> concreta2) {
		this.concreta2 = concreta2;
	}

	public String getValor1() {
		return valor1;
	}

	public void setValor1(String valor1) {
		this.valor1 = valor1;
	}
	
	

}

Outra classe concreta que herda da abastraca

public class ClasseConcreta2 extends ClasseAbstrata {

	@Override
	public void metodo1() {
		metodo2();
	}

}

Eu gostaria de quando executar o método “metodo1” da classe Concreta1 que chama o método “metodo2” da classe pai, nesse método 2 eu gostaria de varrer todos os atributos que são do tipo “ClasseAbstrata” e achando e o mesmo estando instanciado executar o método “metodo1” da instância, no caso acima seria para executar o método “metodo1” da instância concreta2 da classe “Concreta1”.

O pessoal nível advanced dá um HELP! srsrsrrs

Faz assim:


import java.lang.reflect.Field;  
  
public abstract class ClasseAbstrata {  
  
    public abstract void metodo1();  
  
    public void metodo2() {  
        try {  
            Class cls = ClasseAbstrata.class;  
            Method method = cls.getDeclaredMethod("metodo1");  
  
            method.invoke(this);
        } catch (ClassNotFoundException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
    }  
  
}