Bạn có thể sử dụng Reflection
lớp mẫu
package com.google.util;
Class Maths
{
public Integer doubleIt(Integer a)
{
return a*2;
}
}
và sử dụng giống như this-
bước 1: - Tải Class với tên đầu vào cho trước như String
Class<?> obj=Class.forName("Complete_ClassName_including_package");
//like:- Class obj=Class.forName("com.google.util.Maths");
bước 2: - có được phương pháp với tên được đặt và gõ thông số
Method method=obj.getMethod("NameOfMthodToInvoke", arguments);
//arguments need to be like- java.lang.Integer.class
//like:- Method method=obj.getMethod("doubleIt",java.lang.Integer.class);
bước 3: - Gọi Phương Bằng cách vượt qua Instance của đối tượng và lập luận
Object obj2= method.invoke(obj.newInstance(), id);
//like :- method.invoke(obj.newInstance(), 45);
BẠN CÓ THỂ LÀM BƯỚC 2 NHƯNG NÀY C 01NG
(khi bạn không biết phương pháp đặc biệt tồn tại trong một lớp học mà bạn rà soát tất cả phương pháp lặp mảng phương pháp của)
Method[] methods=obj.getMethods();
Method method=null;
for(int i=0;i<methods.length();i++)
{
if(method[1].getName().equals("methodNameWeAreExpecting"))
{
method=method[i];
}
}
Nguồn
2013-02-28 12:40:15
bạn chỉ có thể làm điều đó nếu bạn biết tại thời gian biên dịch, ví dụ có nghĩa là sẽ có một Foobar - mà sau đó có nghĩa là bạn sẽ không cần phải sử dụng sự phản chiếu ngay từ đầu! – Chii
@Chii: Không cần thiết. FooBar có thể là loại phổ biến nhất mà từ đó bạn nhận được thông qua sự phản chiếu. Đây là cách trình điều khiển JDBC ví dụ đang hoạt động và có bao nhiêu kiến trúc plugin được thiết kế. – quosoo