泛型之常用的通配符有哪些?
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 35/100
- Loại issue
- Tài liệu
- Độ rõ ràng
- Cần làm rõ
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- java
- Lĩnh vực
- documentation
Hướng nghiên cứu
Không có tệp hoặc bài kiểm thử nào được nêu tên. Trước tiên, hãy tìm tài liệu về generic hoặc wildcard của Java trong repository, sau đó đối chiếu các phần giải thích và ví dụ của issue với hướng dẫn xung quanh. Công việc được xem là hoàn tất khi phạm vi dự kiến đã được thống nhất và tài liệu liên quan giải thích chính xác wildcard có giới hạn trên, không giới hạn và có giới hạn dưới.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
常用的通配符为: T,E,K,V,?
? 表示不确定的 Java 类型
T (type) 表示具体的一个 Java 类型
K V (key value) 分别代表 Java 键值中的 Key Value
E (element) 代表 Element
上面说的 T、E、K、V 其实都只是类型参数。而 ? 才是通配符,而且准确来说,是无限定通配符。
通配符分为有限定通配符,无限定通配符,超类型通配符。
有限定通配符:形式类似于 <? extends E>,E 如果为类,只有传入的类型参数为 E 的本身及子类才可以使用,E 如果为接口,则必须实现该接口,只能读不能写,可以用类型参数替代。
public void addAll(DynamicArray<? extends E> array) {
}
无限定通配符:形式为 <?>,都可以使用,只能读不能写,可以用类型参数替代。
public void addAll(DynamicArray<?> array) {
}
超类型通配符:形式为 <? super E>,可以实现对象往父类型写入,不可以用类型参数替代。
public void copyTo(DynamicArray<? super E> dest) {
}
简单总结
其中有限定通配符和无限定通配符只能读不能写,可以被类型参数替代。而超类型通配符可以使用对象往父类型写入,不可以用类型参数替代。
有限定通配符和无限定通配符既然能被类型参数替换,该如何选择使用的?
应该根据使用场景:
- 需要写入的,必须使用类型参数。
- 只需要读的,优先使用通配符,通配符让代码看起来更简单。
- Ngôn ngữ chính
- JavaScript
- Star
- 159k
- Fork
- 46.1k
- Merge trung bình
- 1 ngày 8 giờ
- Pull request đã merge (30 ngày)
- 10
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của Snailclimb/JavaGuide
-
失效链接替换 Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 78/100
Snailclimb/JavaGuide#2922 · 1 bình luận ·
-
关于数组转集合方法的第六种:使用Java9的List.of() Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 45/100
Snailclimb/JavaGuide#2649 · 2 bình luận ·
-
perfect content
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 55/100
Snailclimb/JavaGuide#2453 · 3 bình luận ·
-
关于Disruptor中填充了多少字节的补充 Đang mởperfect content
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
Snailclimb/JavaGuide#2259 · 2 bình luận ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 35/100
Snailclimb/JavaGuide#2074 ·
Tất cả issue của Snailclimb/JavaGuide
Issue tương tự
-
awaiting triage bug Causes friction Hop Gui P1 P2 Transforms
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
Improve Title Support Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
georgestephanis/p2026#40 ·
-
Enatega Customer and Rider app: Add-ons price is not visible to customer after order is placed. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Margaret-Petersen/food-delivery-app-clone-react-native#1981 ·