cuốn sách gpt4 ai đã làm

Làm cách nào để kiểm tra xem tham số của phương thức hiện tại có chú thích hay không và truy xuất giá trị tham số đó trong Java?

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 03:14:32 25 4
mua khóa gpt4 Nike

Hãy xem xét mã này:

ví dụ công khai(Chuỗi s, int i, @Foo Bar bar) {
/* ... */
}

Tôi muốn kiểm tra xem phương thức có chú thích không @Foo và lấy các tham số nếu không tìm thấy @Foo Bình luận ném một ngoại lệ.

Cách tiếp cận hiện tại của tôi trước tiên là lấy phương thức hiện tại và sau đó duyệt qua các chú thích tham số:

nhập java.lang.annotation.Annotation;
nhập java.lang.reflect.Method;

lớp Sử dụng {

Phương thức riêng getCurrentMethod() {
thử {
cuối cùng StackTraceElement[] stes = Thread.currentThread().getStackTrace();
cuối cùng StackTraceElement ste = stes[stes.length - 1];
phương thức chuỗi cuối cùngName = ste.getMethodName();
Chuỗi cuối cùng className = ste.getClassName();
Lớp cuối cùng currentClass = Class.forName(className);
trả về currentClass.getDeclaredMethod(methodName);
} bắt (Nguyên nhân ngoại lệ) {
ném ngoại lệ UnsupportedOperationException mới (nguyên nhân);
}
}

Đối tượng riêng getArgumentFromMethodWithAnnotation(Phương thức phương thức, chú thích Class) {
Chú thích cuối cùng[] [] paramAnnotations = Method.getParameterAnnotations();
for (Chú thích[] chú thích : paramAnnotations) {
for (Chú thích an : chú thích) {
/* ... */
}
}
}

}

Đây có phải là cách đúng hay có cách nào tốt hơn? Mã bên trong vòng lặp forach sẽ trông như thế nào? Tôi không chắc là tôi hiểu getParameterChú thích Những gì thực sự được trả lại...

câu trả lời hay nhất

vòng lặp for bên ngoài

for (Chú thích[] chú thích : paramAnnotations) {
...
}

Nên sử dụng bộ đếm rõ ràng, nếu không bạn sẽ không biết mình đang xử lý thông số nào

Chú thích cuối cùng[] [] paramAnnotations = Method.getParameterAnnotations();
Lớp cuối cùng [] paramTypes = Method.getParameterTypes();
for (int i = 0; i < paramAnnotations.length; i++) {
for (Chú thích a: paramAnnotations[i]) {
if (một thể hiện của Foo) {
System.out.println(String.format("tham số %d với kiểu %s được chú thích bằng @Foo", i, paramTypes[i]);
}
}
}

Đồng thời đảm bảo loại chú thích của bạn sử dụng @Retention(RetentionPolicy.RUNTIME) Chú thích

Từ câu hỏi của bạn, không hoàn toàn rõ ràng bạn muốn làm gì. Chúng tôi đồng ý về sự khác biệt giữa các tham số hình thức và các tham số thực tế:

void foo(int x) { }

{ foo(3); }

x là một tham số,3 Nó có phải là một tham số không?

Các tham số của một phương thức không thể thu được thông qua sự phản chiếu. Nếu có thể bạn sẽ phải sử dụng mặt trời.không an toàn Cái túi. Nhưng tôi không thể nói với bạn nhiều.

Giới thiệu về java - Làm cách nào để kiểm tra xem tham số của phương thức hiện tại có chú thích hay không và truy xuất giá trị tham số đó trong Java? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/7228590/

25 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress