Tôi đang làm việc trên một bài tập về sự phản ánh của Java. Chi tiết bên dưới:Phản ánh Java: Cách nhận các phương thức không có tham số chỉ
Viết chương trình bảng điều khiển yêu cầu người dùng cho tên lớp, tải lớp đó và tạo một thể hiện của nó. Chúng tôi giả định rằng lớp có một hàm tạo mà không có bất kỳ tham số nào. Sau đó, chương trình in ra các tên và giá trị của các biến công khai của đối tượng đã tạo và cũng là danh sách các phương thức công khai không chỉ định tham số. Chương trình sẽ cho phép người dùng chọn phương thức và thực thi phương thức đó trên đối tượng đã tạo. Sau đó, chương trình sẽ hiển thị lại các biến công khai với giá trị của chúng và cho phép người dùng chọn phương thức , v.v. Sử dụng các lớp sau để kiểm tra thực hiện của bạn:
public class Counter { public int c; public void increment() { c++; } public void decrement() { c--; } public void reset() { c = 0; } }
Vấn đề tôi đang gặp đã làm với các câu sau: "danh sách các phương pháp công cộng mà không chỉ định một tham số". Có cách nào để chỉ liệt kê các phương thức không có tham số không? Tôi đã sử dụng getMethods nhưng cuối cùng tôi nhận được rất nhiều phương thức từ các lớp siêu lớp Object và Class với các tham số.
Ví dụ đoạn mã sau mà tôi đã viết:
import java.lang.reflect.*;
import java.io.*;
public class Q1 {
public static void main(String[] args) {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.print("What class would you like to run? ");
String className = reader.readLine();
Class c = Class.forName(className);
Object o = c.newInstance();
for (Field f : c.getFields())
System.out.println(f);
for (Method m : c.getMethods())
System.out.println(m);
} catch(IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
đầu ra như sau:
lớp Những gì bạn muốn chạy? Counter
public int Counter.c
public void Counter.reset()
public void Counter.increment()
public void Counter.decrement()
công thức có nguồn gốc khoảng trống java.lang.Object.wait (dài) ném java.lang.InterruptedException
void cuối cùng công khai java.lang.Object.wait() ném java.lang.InterruptedException
void cuối cùng công khai java.lang.Object.wait (long, int) ném java.lang.InterruptedException
công khai boolean java.lang.Object.equals (java.lang.Object)
java.la công khai ng.String java.lang.Object.toString()
native native int java.lang.Object.hashCode()
public final java.lang.Class java.lang.Object.getClass()
public final native làm mất hiệu lực java.lang.Object.notify()
công thức có nguồn gốc khoảng trống java.lang.Object.notifyAll()
có cách nào để có được chỉ là những người không có tham số được in? Ngoài ra, tôi cũng giải thích chi tiết bài tập ngay từ đầu? Hay cụm từ "các phương thức công khai không chỉ định một tham số" có thể có nghĩa là một cái gì đó khác và tôi hoàn toàn sai ý tưởng?
Đây là bài tập RTFM. Và đây là hướng dẫn - http://download.oracle.com/javase/6/docs/api/index.html?java/lang/reflect/package-summary.html. Giải thích của bạn về nhiệm vụ là chính xác bằng cách này. – Perception