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

Làm cách nào để lấy giá trị của các tham số phương thức thông qua sự phản chiếu 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ụ public void(String s, int i, @Foo Bar bar) {
/* ... */
}

tôi sử dụng nó @Foo Giá trị của tham số chú thích là đáng quan tâm. Giả sử tôi đã vượt qua sự phản ánh (sử dụng Phương thức#getParameterAnnotations()) để tìm ra tham số phương thức nào có @Foo Ghi chú. (Tôi biết đó là tham số thứ ba của bảng tham số.)

Làm sao để lấy lại bây giờ thanh giá trị để sử dụng tiếp?

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

Bạn không thể. Sự phản chiếu không thể truy cập các biến cục bộ, bao gồm cả các tham số phương thức.

Nếu muốn chức năng đó, bạn cần chặn các cuộc gọi phương thức, bạn có thể thực hiện việc này theo một trong nhiều cách:

  • AOP (AspectJ/AOP mùa xuân, v.v.)
  • Proxy (JDK, CGLib, v.v.)

Trong tất cả những điều này, bạn sẽ thu thập các tham số từ lệnh gọi phương thức và sau đó yêu cầu lệnh gọi phương thức thực thi. Nhưng các tham số của phương thức không thể thu được thông qua sự phản chiếu.

Cập nhật: Đây là một khía cạnh mẫu để giúp bạn bắt đầu xác thực dựa trên chú thích bằng cách sử dụng AspectJ

khía cạnh công khai Xác thựcAspect {

pointcut serviceMethodCall() : thực thi(public * com.yourcompany.**.*(..));

Đối tượng xung quanh(Đối tượng cuối cùng[] args): serviceMethodCall() && args(args){
Chữ ký chữ ký = thisJoinPointStaticPart.getSignature();
if( signature instanceof MethodSignature){
MethodSignature ms = chữ ký (MethodSignature);
Phương thức phương thức = ms.getMethod();
Chú thích[][] tham sốAnnotations =
phương thức.getParameterAnnotations();
Chuỗi[] tham sốNames = ms.getParameterNames();
for(int i = 0; i < tham sốAnnotations.length; i++){
Chú thích[] chú thích = tham sốAnnotations[i];
xác thựcParameter(parameterNames[i], args[i],annotations);
}
}
return tiến hành (args);
}

riêng tư void validParameter(String paramName, đối tượng đối tượng,
Chú thích[] chú thích){

// xác thực đối tượng dựa trên các chú thích
// ném RuntimeException nếu xác thực thất bại
}

}

Giới thiệu về java - Làm cách nào để lấy giá trị của các tham số phương thức thông qua sự phản chiếu 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/7230326/

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