Örnek

Bir Sınıfın Örneğin Yaratılım Method'larını Çağıran Örnek

Aşağıdaki örnekte bir Person sınıfının nesnesi yaratılmakta ve method'ları çağrılmaktadır. Person sınıfı aşağıdaki gibidir:
package com.test.reflection;

public class Person {
	
	private String name;
	private double weight;
	public int year;
		
	public Person() {
	}
	
	public Person(String name) {
		this.name=name;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public double getWeight() {
		return weight;
	}
	public void setWeight(double weight) {
		this.weight = weight;
	}
	public int getYear() {
		return year;
	}
	public void setYear(int year) {
		this.year = year;
	}
	
	public String getNameAndYear(){
		return name + "-" + year;
	}

}
Örnek uygulama aşağıdaki gibidir :
package com.test.reflection;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class ClassSetInfoTest {
	
	public static void main(String[] args) 
			throws ClassNotFoundException, NoSuchMethodException, 
			SecurityException, InstantiationException,
			IllegalAccessException, 
			IllegalArgumentException, 
			InvocationTargetException {
	
		Class<?> classOfPerson=Class.forName("com.test.reflection.Person");
		
		Constructor constructor=classOfPerson.getConstructor(String.class);
		
		Object objectOfPerson=constructor.newInstance("Neşet Ertaş");
		
		Method methodOfPersonSetYear = objectOfPerson.getClass().getMethod("setYear", int.class);
		methodOfPersonSetYear.invoke(objectOfPerson, 65);
		
		Method methodOfPerson = objectOfPerson.getClass().getMethod("getNameAndYear", null);
		String response=(String)methodOfPerson.invoke(objectOfPerson, null);
		
		System.out.println("response: "+response);
		
		
	}

}

İlk önce Class.forName("com.test.reflection.Person") ile bir Class nesnesi yaratılmıştır. classOfPerson.getConstructor(String.class) ile String kabul eden kurucusu alınmıştır. constructor.newInstance("Neşet Ertaş") diyerek bu kurucu ile bir instance (örnek) yaratılmıştır. objectOfPerson.getClass().getMethod("setYear", int.class) ile setYear method'u alınmış ve methodOfPersonSetYear.invoke(objectOfPerson, 65) ile çağrılmıştır. Aynı şekilde getNameAndYear method'u da alınmış ve çağrılmıştır. getNameAndYear geri değer döndürmesinden dolayı geri dönen değer alınmış ve ekranda bastırılmıştır. Uygulama çalıştığında aşağıdaki bilgi basılacaktır: response: Neşet Ertaş-65 Uygulama çok sayıda Exception fırlattığına dikkat ediniz.
zafer.teker , 24.10.2016

Bu Sayfayı Paylaş:

Fibiler Üyelerinin Yorumları


Tüm üyeler içeriklere yorum ekleyerek katkıda bulunabilir : Yorum Gir



Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir