2010-07-14 38 views
11

Có loại chuẩn "gọi lại" hoặc "chức năng/phương pháp" chung nào trong Java, như System.Action<T> hoặc System.Func<T,U> trong .NET?Java tương đương với .NET Action <T> và Func <T,U>, v.v.

Trong trường hợp cụ thể của tôi, tôi cần một lớp kết thúc tốt đẹp một phương pháp lấy một tham số (chung) loại T và không trả về gì (ví dụ: void).

Có, thật dễ dàng để tạo một lớp/giao diện như vậy cho bản thân mình, nhưng tôi thích lớp thư viện chuẩn hơn nếu có.

Trả lời

12

Tôi không tin có điều gì trong thư viện chuẩn như thế này, không (tại thời điểm viết bài, 2010). Các thư viện khác có chúng - những thứ như số Provider<T> của Guice và Function<F, T>, Supplier<T>Predicate<T> của Guice ... vì vậy nếu bạn đang sử dụng thư viện, bạn có thể muốn xem xét những gì chúng cung cấp theo hướng này.

(EDIT:. Như đã đề cập, đó là giao diện mà trở lại thứ - rất giống với Func<T, U> nhưng không tương tự như Action<T>)

+0

Làm cách nào để chúng tương đương? Mỗi mục bạn đề xuất dự kiến ​​sẽ trả về một giá trị. Xem [câu hỏi liên quan] của tôi (http://stackoverflow.com/q/9007008/403455). –

+0

@glenviewjeff: Chúng không giống với 'Action ', nhưng chúng tương tự như 'Func '. –

+0

@glenviewjeff: Bạn luôn có thể sử dụng [java.lang.Void] (http://docs.oracle.com/javase/7/docs/api/java/lang/Void.html) nếu bạn không cần trả lại giá trị. Một "tiêu chuẩn hóa" 'Func ' là tốt hơn không có gì, imo. –

2

Java tiêu chuẩn thư viện không cung cấp bất kỳ lớp học như vậy.

Bạn có thể sử dụng thư viện Functional Java cung cấp fj.F1<T, fj.Unit> về cơ bản tương đương với System.Action<T> từ .NET.

Các vấn đề liên quan