Örnek

Bir Sınıfın Alan , Method ve Kurucu Bilgilerinin Bulunması

Aşağıdaki örnekte bir Person sınıfının alanları , method'ları ve kurucularının bilgileri ekrana basılmıştı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.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Parameter;
public class ClassGetInfoTest {
	
	public static void main(String[] args) {
		
		Person person=new Person();
		person.setName("Refik Başaran");
		person.setWeight(90);
		person.setYear(1950);
		
		Class<?> classOfPerson=person.getClass();
		
		System.out.println("name:"+classOfPerson.getName());
		
		System.out.println("");
		
		System.out.println("fields:");
		
		for (Field field : classOfPerson.getFields()) {
		
			System.out.println("field name: "+field.getName() +
					"- field type name: "+field.getType().getName());
		}
				
		System.out.println("methods:");
		
		for (Method method : classOfPerson.getMethods()) {
			
			System.out.println("method name: "+method.getName());
			
			System.out.println("method parameter count: "+method.getParameterCount());
			
			for(Parameter parameter: method.getParameters()){
				System.out.println("field name: "+parameter.getName() + 
						" - field type name: "+parameter.getType().getName());				
			}
			
			System.out.println("return type:"+ method.getReturnType().getName());
			
			System.out.println("*");
		}
		
		System.out.println("constructors: ");
		
		for (Constructor constructor : classOfPerson.getConstructors()) {
			
			System.out.println("constructor parameter count: "+constructor.getParameterCount());
			
			for(Parameter parameter: constructor.getParameters()){
				System.out.println("constructor parameter name: "+parameter.getName() + 
						" - constructor parameter type name: "+parameter.getType().getName());				
			}
			
		}
		
		
	}
}

İlk önce bir Person nesnesi yaratıyoruz. person.getClass(); ile Class bilgisini alıp class adını bastırıyoruz. classOfPerson.getFields() ile alanlarını alıyoruz (public alanlar gelecektir) ve adlarını ve tiplerini bastırıyoruz. classOfPerson.getMethods() ile methodlarını ve ardından classOfPerson.getConstructors() ile de kurucularını alıp ekrana bastırıyoruz. Uygulamayı çalıştırdığımızda aşağıdaki gibi çıktı oluşacaktır :

name:com.test.reflection.Person
fields:
field name: year - field type name: int
methods:
method name: getName
method parameter count: 0
return type:java.lang.String
*
method name: setName
method parameter count: 1
field name: arg0 - field type name: java.lang.String
return type:void
*
method name: setWeight
method parameter count: 1
field name: arg0 - field type name: double
return type:void
*
method name: getWeight
method parameter count: 0
return type:double
*
method name: getNameAndYear
method parameter count: 0
return type:java.lang.String
*
method name: getYear
method parameter count: 0
return type:int
*
method name: setYear
method parameter count: 1
field name: arg0 - field type name: int
return type:void
*
method name: wait
method parameter count: 2
field name: arg0 - field type name: long
field name: arg1 - field type name: int
return type:void
*
method name: wait
method parameter count: 1
field name: arg0 - field type name: long
return type:void
*
method name: wait
method parameter count: 0
return type:void
*
method name: equals
method parameter count: 1
field name: arg0 - field type name: java.lang.Object
return type:boolean
*
method name: toString
method parameter count: 0
return type:java.lang.String
*
method name: hashCode
method parameter count: 0
return type:int
*
method name: getClass
method parameter count: 0
return type:java.lang.Class
*
method name: notify
method parameter count: 0
return type:void
*
method name: notifyAll
method parameter count: 0
return type:void
*
constructors:
constructor parameter count: 0
constructor parameter count: 1
constructor parameter name: arg0 - constructor parameter type name: java.lang.String

Dikkat edilirse Object sınıfında bulunan method'larda çıktıda gözükmektedir.
zafer.teker , 18.05.2018

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