ทำความรู้จักกับ Java Reflection

สำหรับ programmer หรือ developer ที่เข้าสู่โหมด enterprise ก็จะได้เจอกับคำว่า Java Reflection ว่าแต่มันคืออะไรกันนะ!!!

Java Reflection คือ กระบวนการตรวจสอบหรือปรับเปลี่ยนพฤติกรรมของ java class run time

ไม่พูดมากเรามาดูตัวอย่างการเขียนโค้ดกันเลยจ้าาาาา อิอิ ^^

ตัวอย่างที่ 1 การเรียกใช้ชื่อ Field ด้วย Java Reflection

1. สร้าง class Employee เพื่อเตรียมใช้งานสำหรับการเขียนโค้ด

package com.model;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class Employee {
private String name;
private int age;

public Employee(String name, int age) {
this.name = name;
this.age = age;
}
}

2. สร้าง class Test เพื่อใช้เป็น main test ในการเขียนโปรแกรม

package com.test;import java.lang.reflect.Field;
import com.model.Employee;
public class Test {
public static void main(String[] args) throws Exception {
Employee emp1 = new Employee("ammy", 26);
Field nameF1 = emp1.getClass().getDeclaredField("name");
Field ageF1 = emp1.getClass().getDeclaredField("age");

nameF1.setAccessible(true);
ageF1.setAccessible(true);
System.out.println("emp1 mame :"+ nameF1.get(emp1));
System.out.println("emp1 age :"+ ageF1.get(emp1));

Employee emp2 = new Employee("vipawadee", 26);
Field nameF2 = emp2.getClass().getDeclaredField("name");
Field ageF2 = emp2.getClass().getDeclaredField("age");

nameF2.setAccessible(true);
ageF2.setAccessible(true);
System.out.println("emp2 mame :"+ nameF2.get(emp2));
System.out.println("emp2 age :"+ ageF2.get(emp2));
}
}

ผลลัพธ์

emp1 mame :ammy
emp1 age :26
emp2 mame :vipawadee
emp2 age :26

ตัวอย่างที่ 2 การเรียกใช้ชื่อ Method ด้วย Java Reflection

  1. สร้าง class HelloModel เพื่อเตรียมใช้งานสำหรับการเขียนโค้ดโดยมี method
  • getHelloA
  • getHelloB
package com.model;public class HelloModel {
public String getHelloA() {return "hello A Test Naja";}
public String getHelloB() {return "hello B Test Naja";}
}

2. สร้าง class Test เพื่อใช้เป็น main test ในการเขียนโปรแกรม

package com.test;import java.lang.reflect.Method;
import com.model.HelloModel;
public class Test {
public static void main(String[] args) throws Exception {

HelloModel model = new HelloModel();

Method methodA = model.getClass().getMethod("getHelloA");
String resultA = (String) methodA.invoke(model);
System.out.println("resultA :"+resultA);

Method methodB = model.getClass().getMethod("getHelloB");
String resultB = (String) methodB.invoke(model);
System.out.println("resultB :"+resultB);
}
}

ผลลัพธ์

resultA :hello A Test Naja
resultB :hello B Test Naja

จบแล้วค่ะ! นี่เป็นการยกตัวอย่างการใช้ Java Reflection แค่ส่วนหนึ่งเท่านั้นนะคะ! ถ้าเขียนไม่ถูกหรือเข้าใจอะไรผิดพลาดไปคอมเม้นแนะนำได้นะคะ! ยินดีรับฟังจ้า 😊

*** หวังว่าจะมีประโยชน์ไม่มากก็น้อยสำหรับบางคนนะคะ อิอิ 😊😁👍

--

--

No responses yet