{"id":7074,"date":"2026-09-25T11:00:42","date_gmt":"2026-09-25T07:30:42","guid":{"rendered":"https:\/\/parmin.cloud\/blog\/?p=7074"},"modified":"2026-09-25T11:00:42","modified_gmt":"2026-09-25T07:30:42","slug":"%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%ac%d8%a7%d9%85%d8%b9-generic-%d8%af%d8%b1-%d8%ac%d8%a7%d9%88%d8%a7-%d9%85%d8%b2%d8%a7%db%8c%d8%a7%d8%8c-%d9%85%d8%ab%d8%a7%d9%84%d9%87%d8%a7-%d9%88-%d8%a8","status":"publish","type":"post","link":"https:\/\/parmin.cloud\/blog\/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%d8%ac%d8%a7%d9%85%d8%b9-generic-%d8%af%d8%b1-%d8%ac%d8%a7%d9%88%d8%a7-%d9%85%d8%b2%d8%a7%db%8c%d8%a7%d8%8c-%d9%85%d8%ab%d8%a7%d9%84%d9%87%d8%a7-%d9%88-%d8%a8\/","title":{"rendered":"\u0622\u0645\u0648\u0632\u0634 \u062c\u0627\u0645\u0639 Generic \u062f\u0631 \u062c\u0627\u0648\u0627: \u0645\u0632\u0627\u06cc\u0627\u060c \u0645\u062b\u0627\u0644\u200c\u0647\u0627 \u0648 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u200c\u0647\u0627"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\u0645\u0642\u062f\u0645\u0647<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Generic\u0647\u0627\u06cc \u062c\u0627\u0648\u0627 \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u06a9\u0644\u0627\u0633\u200c\u0647\u0627\u060c \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633\u200c\u0647\u0627 \u0648 \u0645\u062a\u062f\u0647\u0627\u06cc\u06cc \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f \u06a9\u0647 \u0631\u0648\u06cc \u062a\u0627\u06cc\u067e\u06cc \u0645\u0634\u062e\u0635\u200c\u0634\u062f\u0647 \u062f\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0639\u0645\u0644 \u06a9\u0646\u0646\u062f\u2014\u0646\u0647 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627. Generic\u0647\u0627 \u06a9\u0647 \u062f\u0631 \u062c\u0627\u0648\u0627 \u06f5 (JSR 14\u060c \u0633\u067e\u062a\u0627\u0645\u0628\u0631 \u06f2\u06f0\u06f0\u06f4) \u0645\u0639\u0631\u0641\u06cc \u0634\u062f\u0646\u062f\u060c \u0628\u0631\u0631\u0633\u06cc \u062a\u0627\u06cc\u067e \u0632\u0645\u0627\u0646-\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0647 \u0648 Cast\u0647\u0627\u06cc \u0635\u0631\u06cc\u062d \u0648 \u0631\u06cc\u0633\u06a9 ClassCastException\u2014which \u062f\u0631 \u06a9\u062f Collection \u0642\u0628\u0644 \u0627\u0632 \u062c\u0627\u0648\u0627 \u06f5 \u0631\u0627\u06cc\u062c \u0628\u0648\u062f\u2014\u0631\u0627 \u062d\u0630\u0641 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f. \u06a9\u0644 \u0641\u0631\u06cc\u0645\u200c\u0648\u0631\u06a9 Java Collections \u0628\u0631\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a \u062a\u0627\u06cc\u067e \u0628\u0627\u0632\u0646\u0648\u06cc\u0633\u06cc \u0634\u062f \u062a\u0627 \u0627\u0632 Generic\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627\u06cc Generic\u060c \u0645\u062a\u062f\u0647\u0627 \u0648 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633\u200c\u0647\u0627\u060c \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u0645\u062d\u062f\u0648\u062f\u0634\u062f\u0647 (Bounded Type Parameter)\u060c Wildcard\u0647\u0627 \u0648 Type Erasure \u0631\u0627\u2014to\u200c\u0647\u0645\u0631\u0627\u0647 \u0631\u0648\u0634\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u06a9\u062f Generic \u0631\u0627 \u0627\u0645\u0646 \u0648 \u062e\u0648\u0627\u0646\u0627 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0646\u062f\u2014\u067e\u0648\u0634\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f. \u0645\u062b\u0627\u0644\u200c\u0647\u0627 \u0627\u0632 \u0633\u06cc\u0646\u062a\u06a9\u0633 \u062c\u0627\u0648\u0627 \u06f8+ \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u0647\u0645\u0627\u0646\u200c\u0637\u0648\u0631 \u06a9\u0647 \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0646\u06a9\u0627\u062a \u06a9\u0644\u06cc\u062f\u06cc<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Generic\u0647\u0627\u06cc \u062c\u0627\u0648\u0627 \u0627\u0645\u0646\u06cc\u062a \u062a\u0627\u06cc\u067e \u0632\u0645\u0627\u0646-\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u061b \u067e\u0633 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u062e\u0637\u0627\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u0631\u0627 \u0642\u0628\u0644 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u06cc\u200c\u06af\u06cc\u0631\u062f\u2014\u0628\u0647\u200c\u062c\u0627\u06cc \u0634\u06a9\u0633\u062a \u0628\u0627 ClassCastException \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627.<\/li>\n\n\n\n<li>Generic\u0647\u0627 \u062f\u0631 \u062c\u0627\u0648\u0627 \u06f5 (JSR 14) \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0646\u062f \u0648 \u0641\u0631\u06cc\u0645\u200c\u0648\u0631\u06a9 Java Collections \u0647\u0645\u200c\u0632\u0645\u0627\u0646 \u0628\u0627\u0632\u0646\u0648\u06cc\u0633\u06cc \u0634\u062f \u062a\u0627 \u0627\u0632 \u0622\u0646\u200c\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f.<\/li>\n\n\n\n<li>\u06a9\u0644\u0627\u0633 \u06cc\u0627 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 Generic\u060c \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u0631\u0627 \u062f\u0631 \u06af\u06cc\u0648\u0645\u0647 \u0632\u0627\u0648\u06cc\u0647\u200c\u062f\u0627\u0631 (<code>&lt;T><\/code>) \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u0645\u062a\u062f Generic \u0647\u0645 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e\u0650 \u062e\u0648\u062f\u0634 \u0631\u0627\u2014\u0645\u062d\u062f\u0648\u062f \u0628\u0647 \u0647\u0645\u0627\u0646 \u0645\u062a\u062f\u2014\u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n\n\n\n<li>\u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u0645\u062d\u062f\u0648\u062f\u0634\u062f\u0647 (<code>&lt;T extends Number><\/code>) \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u067e\u0630\u06cc\u0631\u0641\u062a\u0647\u200c\u0634\u062f\u0647 \u0631\u0627 \u0645\u062d\u062f\u0648\u062f \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u061b Bound\u0647\u0627\u06cc \u0645\u062a\u0639\u062f\u062f (<code>&lt;T extends A &amp; B><\/code>) \u062d\u062f\u0627\u06a9\u062b\u0631 \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u062f\u0631 \u0641\u0647\u0631\u0633\u062a \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f.<\/li>\n\n\n\n<li><strong>Wildcard\u0647\u0627 \u0627\u0646\u0639\u0637\u0627\u0641 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f:<\/strong> <code>? extends T<\/code> \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646 \u0627\u0632 \u0633\u0627\u062e\u062a\u0627\u0631 (Producer)\u060c <code>? super T<\/code> \u0628\u0631\u0627\u06cc \u0646\u0648\u0634\u062a\u0646 \u062f\u0631 \u0633\u0627\u062e\u062a\u0627\u0631 (Consumer) \u0648 <code>?<\/code> \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0646\u0627\u0645\u062d\u062f\u0648\u062f. \u0627\u06cc\u0646 \u0647\u0645\u0627\u0646 \u0642\u0627\u0639\u062f\u0647 <strong>PECS<\/strong> \u0627\u0633\u062a: Producer Extends, Consumer Super.<\/li>\n\n\n\n<li>\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0647\u0645\u0647 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u0631\u0627 \u062d\u06cc\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u2014from \u0637\u0631\u06cc\u0642 Type Erasure\u2014\u062d\u0630\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u067e\u0633 Generic\u0647\u0627 \u0647\u06cc\u0686 \u0633\u0631\u0628\u0627\u0631 \u0632\u0645\u0627\u0646-\u0627\u062c\u0631\u0627\u06cc\u06cc \u0646\u062f\u0627\u0631\u0646\u062f \u0648 <code>List&lt;String><\/code> \u0648 <code>List&lt;Integer><\/code> \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0632\u0645\u0627\u0646-\u0627\u062c\u0631\u0627\u06cc\u06cc \u0631\u0627 \u0634\u0631\u06cc\u06a9\u200c\u0627\u0646\u062f.<\/li>\n\n\n\n<li>\u0627\u0632 <strong>Raw Type<\/strong> \u062f\u0631 \u06a9\u062f \u062c\u062f\u06cc\u062f \u0627\u062c\u062a\u0646\u0627\u0628 \u06a9\u0646\u06cc\u062f\u060c PECS \u0631\u0627 \u0631\u0648\u06cc \u0627\u0646\u062a\u062e\u0627\u0628\u0647\u0627\u06cc Wildcard \u062f\u0631 \u0627\u0645\u0636\u0627\u0647\u0627\u06cc API \u0639\u0645\u0648\u0645\u06cc \u0627\u0639\u0645\u0627\u0644 \u06a9\u0646\u06cc\u062f \u0648 \u0627\u0632 \u0646\u0627\u0645\u0647\u0627\u06cc \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u062a\u06a9-\u062d\u0631\u0641\u06cc\u0650 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e (\u06cc\u0639\u0646\u06cc E\u060c K\u060c V\u060c N\u060c T) \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Generic \u062f\u0631 \u062c\u0627\u0648\u0627<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Generic\u0647\u0627 \u062f\u0631 \u062c\u0627\u0648\u0627 \u06f5 \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0646\u062f \u062a\u0627 \u0628\u0631\u0631\u0633\u06cc \u062a\u0627\u06cc\u067e \u0632\u0645\u0627\u0646-\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u06a9\u0631\u062f\u0647 \u0648 \u0631\u06cc\u0633\u06a9 ClassCastException\u2014which \u0647\u0646\u06af\u0627\u0645 \u06a9\u0627\u0631 \u0628\u0627 \u06a9\u0644\u0627\u0633\u0647\u0627\u06cc Collection \u0631\u0627\u06cc\u062c \u0628\u0648\u062f\u2014\u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u0646\u062f. \u06a9\u0644 \u0641\u0631\u06cc\u0645\u200c\u0648\u0631\u06a9 Collection \u0628\u0631\u0627\u06cc \u0627\u0645\u0646\u06cc\u062a \u062a\u0627\u06cc\u067e \u0628\u0627\u0632\u0646\u0648\u06cc\u0633\u06cc \u0634\u062f. \u0645\u062b\u0627\u0644\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0645\u0633\u0626\u0644\u0647\u200c\u0627\u06cc \u0631\u0627 \u06a9\u0647 Generic\u0647\u0627 \u062d\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>List list = new ArrayList();\nlist.add(\"abc\");\nlist.add(Integer.valueOf(5));\n\/\/ \u0645\u062c\u0627\u0632: raw type \u0647\u06cc\u0686 \u0628\u0631\u0631\u0633\u06cc \u062a\u0627\u06cc\u067e \u0632\u0645\u0627\u0646-\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u06cc \u0627\u0646\u062c\u0627\u0645 \u0646\u0645\u06cc\u200c\u062f\u0647\u062f\n\nfor(Object obj : list){\n \/\/type casting \u0645\u0646\u062c\u0631 \u0628\u0647 ClassCastException \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627\n    String str=(String) obj; \n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u06a9\u062f \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f \u0627\u0645\u0627 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 ClassCastException \u067e\u0631\u062a\u0627\u0628 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u0686\u0648\u0646 \u06cc\u06a9\u06cc \u0627\u0632 \u0639\u0646\u0627\u0635\u0631 Integer \u0627\u0633\u062a \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u062d\u0644\u0642\u0647 \u0647\u0631 \u0639\u0646\u0635\u0631 \u0631\u0627 \u0628\u0647 String \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u0627 Collection \u062a\u0627\u06cc\u067e\u200c\u0634\u062f\u0647\u060c \u0647\u0645\u0627\u0646 \u062e\u0637\u0627 \u0628\u0647 \u0634\u06a9\u0633\u062a \u0632\u0645\u0627\u0646-\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>List&lt;String&gt; list1 = new ArrayList&lt;&gt;();\n\/\/ \u0639\u0645\u0644\u06af\u0631 diamond (\u062c\u0627\u0648\u0627 7+): \u062a\u0627\u06cc\u067e \u0627\u0632 \u0633\u0645\u062a \u0686\u067e \u0627\u0633\u062a\u0646\u0628\u0627\u0637 \u0645\u06cc\u200c\u0634\u0648\u062f\nlist1.add(\"abc\");\n\/\/list1.add(new Integer(5)); \/\/\u062e\u0637\u0627\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631\n\nfor(String str : list1){\n     \/\/\u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 type casting\u060c \u0627\u0632 ClassCastException \u0627\u062c\u062a\u0646\u0627\u0628 \u0645\u06cc\u200c\u0634\u0648\u062f\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0639\u06cc\u06cc\u0646 String \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u062a\u0627\u06cc\u067e \u0647\u0646\u06af\u0627\u0645 \u0633\u0627\u062e\u062a list \u06cc\u0639\u0646\u06cc \u0647\u0631 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc <code>list1.add()<\/code> \u0628\u0627 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u063a\u06cc\u0631-String \u062f\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0634\u06a9\u0633\u062a \u0645\u06cc\u200c\u062e\u0648\u0631\u062f. \u0647\u06cc\u0686 Cast\u06cc \u062f\u0631 \u062d\u0644\u0642\u0647 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a\u2014\u0686\u0648\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0627\u0632 \u0642\u0628\u0644 \u062a\u0636\u0645\u06cc\u0646 \u06a9\u0631\u062f\u0647 \u0647\u0631 \u0639\u0646\u0635\u0631\u06cc String \u0627\u0633\u062a\u061b \u06a9\u0647 ClassCastException \u0631\u0627 \u0627\u0632 \u0645\u0646\u0628\u0639 \u062d\u0630\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Generic \u062f\u0631 \u062c\u0627\u0648\u0627 \u0686\u06cc\u0633\u062a\u061f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Generic\u0647\u0627\u06cc \u062c\u0627\u0648\u0627 \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u06a9\u0644\u0627\u0633\u060c \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 \u06cc\u0627 \u0645\u062a\u062f \u0645\u0646\u0641\u0631\u062f\u06cc \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0631\u0648\u06cc \u062a\u0627\u06cc\u067e\u06cc \u0645\u0634\u062e\u0635\u200c\u0634\u062f\u0647 \u062a\u0648\u0633\u0637 Caller \u062f\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0639\u0645\u0644 \u06a9\u0646\u062f. \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 Placeholder\u0627\u06cc \u062f\u0631\u0648\u0646 \u06af\u06cc\u0648\u0645\u0647 \u0632\u0627\u0648\u06cc\u0647\u200c\u062f\u0627\u0631 (<code>&lt;&gt;<\/code>) \u0639\u0645\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u062a\u0627\u06cc\u067e \u0648\u0627\u0642\u0639\u06cc \u0631\u0627 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0631\u062f\u0647 \u0648 \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u062a\u0627\u06cc\u067e \u0631\u0627 \u062f\u0631 \u0647\u0645\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647\u200c\u0647\u0627 \u0627\u0644\u0632\u0627\u0645\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0686\u0631\u0627 Generic\u0647\u0627 \u0628\u0647 \u062c\u0627\u0648\u0627 \u0627\u0636\u0627\u0641\u0647 \u0634\u062f\u0646\u062f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0642\u0628\u0644 \u0627\u0632 \u062c\u0627\u0648\u0627 \u06f5\u060c Collection\u0647\u0627 Untyped \u0628\u0648\u062f\u0646\u062f. \u06cc\u06a9 List \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0633\u062a \u0647\u0631 Object\u0627\u06cc \u0631\u0627 \u0646\u06af\u0647 \u062f\u0627\u0631\u062f \u0648 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0639\u0646\u0635\u0631 \u0647\u0645\u06cc\u0634\u0647 Cast \u0635\u0631\u06cc\u062d\u06cc \u0644\u0627\u0632\u0645 \u062f\u0627\u0634\u062a. \u0627\u06af\u0631 Cast \u0627\u0634\u062a\u0628\u0627\u0647 \u0628\u0648\u062f\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 ClassCastException \u067e\u0631\u062a\u0627\u0628 \u0645\u06cc\u200c\u06a9\u0631\u062f\u2014\u0631\u062f\u0647\u200c\u0627\u06cc \u0627\u0632 \u0628\u0627\u06af \u06a9\u0647 \u06af\u0631\u0641\u062a\u0646\u0634 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u062a\u0633\u062a \u062f\u0634\u0648\u0627\u0631 \u0628\u0648\u062f. \u0645\u062b\u0627\u0644 \u0627\u0645\u0646\u06cc\u062a Collection \u062f\u0631 \u0627\u0628\u062a\u062f\u0627\u06cc \u0647\u0645\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u0645\u0633\u0626\u0644\u0647 \u0631\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Generic\u0647\u0627 \u0622\u0646 \u0628\u0631\u0631\u0633\u06cc \u062a\u0627\u06cc\u067e \u0631\u0627 \u0628\u0647 \u0632\u0645\u0627\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631\u062f\u0646\u062f. \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0639\u062f\u0645 \u062a\u0637\u0627\u0628\u0642 \u062a\u0627\u06cc\u067e \u0631\u0627 \u0642\u0628\u0644 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u06a9\u062f \u0631\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u06a9\u0647 \u062f\u0633\u062a\u0647 \u06a9\u0627\u0645\u0644\u06cc \u0627\u0632 \u062e\u0637\u0627\u0647\u0627\u06cc \u0632\u0645\u0627\u0646-\u0627\u062c\u0631\u0627 \u0631\u0627 \u062d\u0630\u0641 \u0648 Cast\u0647\u0627\u06cc \u062f\u0641\u0627\u0639\u06cc \u0631\u0627 \u062f\u0631 \u0633\u0631\u0627\u0633\u0631 \u06a9\u062f \u0627\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u0627\u0632 \u0628\u06cc\u0646 \u0645\u06cc\u200c\u0628\u0631\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Generic\u0647\u0627 \u062f\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u062f <code>List&lt;String&gt; names = new ArrayList&lt;&gt;()<\/code>\u060c \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 String \u0631\u0627 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u062a\u0627\u06cc\u067e \u062b\u0628\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0647\u0631 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc <code>names.add()<\/code> \u06a9\u0647 String \u067e\u0627\u0633 \u0646\u062f\u0647\u062f \u062f\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0631\u062f \u0645\u06cc\u200c\u0634\u0648\u062f. \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0633\u067e\u0633 \u0627\u0632 Bytecode \u067e\u0627\u06a9 \u0645\u06cc\u200c\u0634\u0648\u062f (\u0628\u062e\u0634 Type Erasure \u0631\u0627 \u0628\u0628\u06cc\u0646\u06cc\u062f)\u061b \u067e\u0633 \u06a9\u0644\u0627\u0633 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u200c\u0634\u062f\u0647 \u0627\u0632 \u0646\u0638\u0631 Binary \u0628\u0627 \u06a9\u062f \u0642\u0628\u0644 \u0627\u0632 \u062c\u0627\u0648\u0627 \u06f5 (Raw Type\u0647\u0627) \u0633\u0627\u0632\u06af\u0627\u0631 \u0645\u06cc\u200c\u0645\u0627\u0646\u062f\u2014even though \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627 \u0647\u0645\u0686\u0646\u0627\u0646 \u0628\u0647 JVM \u062c\u0627\u0648\u0627 \u06f5+ \u0644\u0627\u0632\u0645 \u062f\u0627\u0631\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u0632\u0627\u06cc\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Generic \u062f\u0631 \u062c\u0627\u0648\u0627<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Generic\u0647\u0627 \u0686\u0647\u0627\u0631 \u0645\u0632\u06cc\u062a \u0645\u0634\u062e\u0635 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f: \u0627\u0645\u0646\u06cc\u062a \u062a\u0627\u06cc\u067e \u0632\u0645\u0627\u0646-\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u060c \u062d\u0630\u0641 Cast\u0647\u0627\u06cc \u0635\u0631\u06cc\u062d\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u06a9\u062f \u0628\u06cc\u0646 \u062a\u0627\u06cc\u067e\u0647\u0627 \u0648 \u0645\u0642\u0635\u0648\u062f \u0634\u0641\u0627\u0641\u200c\u062a\u0631. \u0645\u062b\u0627\u0644 \u0632\u06cc\u0631 \u062f\u0648 \u0645\u0648\u0631\u062f \u0627\u0648\u0644 \u0631\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0627\u062b\u0628\u0627\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0646\u0633\u062e\u0647 Raw-Type \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f \u0627\u0645\u0627 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0634\u06a9\u0633\u062a \u0645\u06cc\u200c\u062e\u0648\u0631\u062f\u061b \u0646\u0633\u062e\u0647 Generic \u0647\u0645\u0627\u0646 \u0634\u06a9\u0633\u062a \u0631\u0627 \u0628\u0647 \u0632\u0645\u0627\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631\u062f\u0647 \u0648 Cast \u0631\u0627 \u06a9\u0627\u0645\u0644\u0627\u064b \u062d\u0630\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import java.util.*;\n\npublic class GenericsBenefits {\n    public static void main(String&#91;] args) {\n        \/\/ Raw type: \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f\u060c cast \u062f\u0633\u062a\u06cc \u0644\u0627\u0632\u0645 \u062f\u0627\u0631\u062f\u060c \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0634\u06a9\u0633\u062a \u0645\u06cc\u200c\u062e\u0648\u0631\u062f\n        List rawList = new ArrayList();\n        rawList.add(\"hello\");\n        rawList.add(42);                      \/\/ \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0627\u0639\u062a\u0631\u0627\u0636\u06cc \u0646\u0645\u06cc\u200c\u06a9\u0646\u062f\n        String raw = (String) rawList.get(1); \/\/ ClassCastException \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627\n\n        \/\/ \u062a\u0627\u06cc\u067e Generic: add \u0646\u0627\u0633\u0627\u0632\u06af\u0627\u0631 \u0642\u0628\u0644 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u062f \u0645\u06cc\u200c\u0634\u0648\u062f\n        List&lt;String&gt; typedList = new ArrayList&lt;&gt;();\n        typedList.add(\"hello\");\n        \/\/ typedList.add(42);                 \/\/ \u062e\u0637\u0627\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644: \u0641\u0648\u0631\u0627\u064b \u06af\u0631\u0641\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f\n        String typed = typedList.get(0);      \/\/ \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 cast\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 \u0639\u0645\u0644\u060c \u062d\u0630\u0641 Cast \u0645\u0647\u0645\u200c\u062a\u0631 \u0627\u0632 \u0686\u06cc\u0632\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0646\u06af\u0627\u0647 \u0627\u0648\u0644 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc\u200c\u0631\u0633\u062f: \u0647\u0631 Cast\u0650 \u062d\u0630\u0641\u200c\u0634\u062f\u0647\u060c ClassCastException\u0627\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062f\u06cc\u06af\u0631 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u067e\u0631\u0648\u062f\u0627\u06a9\u0634\u0646 \u0628\u0631\u0633\u062f\u061b \u0648 Boilerplate\u0650 \u0630\u062e\u06cc\u0631\u0647\u200c\u0634\u062f\u0647 \u062f\u0631 Codebase \u0628\u0632\u0631\u06af \u0627\u0646\u0628\u0627\u0634\u062a\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0627\u0645\u0646\u06cc\u062a \u062a\u0627\u06cc\u067e \u0632\u0645\u0627\u0646-\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Generic\u0647\u0627 \u0639\u062f\u0645 \u062a\u0637\u0627\u0628\u0642 \u062a\u0627\u06cc\u067e\u0647\u0627 \u0631\u0627 \u062d\u06cc\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0645\u06cc\u200c\u06af\u06cc\u0631\u0646\u062f\u2014\u0646\u0647 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627\u061b \u0647\u0645\u0627\u0646\u200c\u0637\u0648\u0631 \u06a9\u0647 \u062e\u0637 \u06a9\u0627\u0645\u0646\u062a\u200c\u0634\u062f\u0647\u0654 <code>typedList.add(42)<\/code> \u062f\u0631 \u0628\u0627\u0644\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f. \u062e\u0637\u0627 \u0644\u062d\u0638\u0647 \u0646\u0648\u0634\u062a\u0647 \u0634\u062f\u0646 \u062f\u0631 IDE \u0638\u0627\u0647\u0631 \u0645\u06cc\u200c\u0634\u0648\u062f\u061b \u0646\u0647 \u0628\u0639\u062f\u0627\u064b \u062f\u0631 Stack Trace \u067e\u0631\u0648\u062f\u0627\u06a9\u0634\u0646.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u062d\u0630\u0641 Cast\u0647\u0627\u06cc \u0635\u0631\u06cc\u062d<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u062f\u0648\u0646 Generic\u0647\u0627\u060c \u0647\u0631 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc Cast \u0644\u0627\u0632\u0645 \u062f\u0627\u0631\u062f: <code>String s = (String) list.get(0)<\/code>. \u0628\u0627 Generic\u0647\u0627 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0627\u0632 \u0642\u0628\u0644 \u0646\u0648\u0639 \u0639\u0646\u0635\u0631 \u0631\u0627 \u0645\u06cc\u200c\u062f\u0627\u0646\u062f\u061b \u067e\u0633 <code>String s = list.get(0)<\/code> \u06a9\u0627\u0641\u06cc \u0627\u0633\u062a. Cast \u06a9\u0645\u062a\u0631 \u06cc\u0639\u0646\u06cc \u062c\u0627\u0647\u0627\u06cc \u06a9\u0645\u062a\u0631 \u06a9\u0647 Cast \u0627\u0634\u062a\u0628\u0627\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u062f\u0631 \u0622\u0646 \u067e\u0646\u0647\u0627\u0646 \u0634\u0648\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u06a9\u062f \u0628\u06cc\u0646 \u062a\u0627\u06cc\u067e\u0647\u0627<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0644\u0627\u0633 \u06cc\u0627 \u0645\u062a\u062f Generic \u0645\u0646\u0641\u0631\u062f\u06cc \u0628\u0627 \u0647\u0631 \u062a\u0627\u06cc\u067e Reference\u0627\u06cc \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0645\u0646\u0637\u0642 \u0631\u0627 \u06cc\u06a9\u200c\u0628\u0627\u0631 \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u062f \u0648 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0627\u0645\u0646\u06cc\u062a \u062a\u0627\u06cc\u067e \u0631\u0627 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 \u0628\u0631\u0627\u06cc \u0647\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0639\u06cc\u0646\u06cc \u0627\u0644\u0632\u0627\u0645\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u067e\u0633 <code>Box&lt;String&gt;<\/code> \u0648 <code>Box&lt;Integer&gt;<\/code> \u06cc\u06a9 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0631\u0627 \u0634\u0631\u06cc\u06a9\u200c\u0627\u0646\u062f\u2014\u0628\u062f\u0648\u0646 \u0627\u0632 \u062f\u0633\u062a \u062f\u0627\u062f\u0646 \u0627\u0645\u0646\u06cc\u062a.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u062e\u0648\u0627\u0646\u0627\u06cc\u06cc \u0648 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc\u200c\u067e\u0630\u06cc\u0631\u06cc \u0628\u0647\u0628\u0648\u062f\u06cc\u0627\u0641\u062a\u0647<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc \u0645\u0642\u0635\u0648\u062f \u0631\u0627 \u0635\u0631\u06cc\u062d \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f. <code>Map&lt;String, List&lt;Integer&gt;&gt;<\/code> \u0634\u06a9\u0644 \u062f\u0642\u06cc\u0642 \u062f\u0627\u062f\u0647 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u0646\u06af\u0627\u0647 \u0628\u06cc\u0627\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 <code>Map<\/code> \u062e\u0627\u0645\u060c \u062e\u0648\u0627\u0646\u0646\u062f\u0647 \u0631\u0627 \u0648\u0627\u062f\u0627\u0631 \u0628\u0647 \u0631\u062f\u06cc\u0627\u0628\u06cc \u0646\u062d\u0648\u0647 \u067e\u0631 \u0634\u062f\u0646\u0634 \u0645\u06cc\u200c\u06a9\u0646\u062f \u062a\u0627 \u0628\u0641\u0647\u0645\u062f \u0686\u0647 \u0686\u06cc\u0632\u06cc \u062f\u0631\u0648\u0646 \u062f\u0627\u0631\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u06a9\u0644\u0627\u0633 Generic \u062f\u0631 \u062c\u0627\u0648\u0627<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u062a\u0639\u0631\u06cc\u0641 \u06a9\u0644\u0627\u0633 Generic \u0628\u0627 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0644\u0627\u0633 Generic \u06cc\u06a9 \u06cc\u0627 \u0686\u0646\u062f \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0631\u0627 \u062f\u0631 \u06af\u06cc\u0648\u0645\u0647 \u0632\u0627\u0648\u06cc\u0647\u200c\u062f\u0627\u0631 \u0628\u0639\u062f \u0627\u0632 \u0646\u0627\u0645 \u06a9\u0644\u0627\u0633 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0647\u0631 Instance \u0627\u0632 \u06a9\u0644\u0627\u0633 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u062f\u0631 \u0646\u0642\u0637\u0647 \u0633\u0627\u062e\u062a\u060c \u0645\u0633\u062a\u0642\u0644 \u062a\u0627\u06cc\u067e \u0634\u0648\u062f. \u0628\u0631\u0627\u06cc \u062f\u0631\u06a9 \u0645\u0632\u06cc\u062a\u060c \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 \u0633\u0627\u062f\u0647\u0654 \u063a\u06cc\u0631-Generic \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package com.example.generics;\n\npublic class GenericsTypeOld {\n\n    private Object t;\n\n    public Object get() {\n        return t;\n    }\n\n    public void set(Object t) {\n        this.t = t;\n    }\n\n    public static void main(String&#91;] args) {\n        GenericsTypeOld type = new GenericsTypeOld();\n        type.set(\"Sammy\");\n        String str = (String) type.get();\n        \/\/ cast \u0635\u0631\u06cc\u062d \u0644\u0627\u0632\u0645: \u0645\u0633\u062a\u0639\u062f \u062e\u0637\u0627\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f ClassCastException \u067e\u0631\u062a\u0627\u0628 \u06a9\u0646\u062f\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0627 \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u063a\u06cc\u0631-Generic\u060c \u0647\u0631 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc Cast \u0635\u0631\u06cc\u062d\u06cc \u0644\u0627\u0632\u0645 \u062f\u0627\u0631\u062f \u0648 \u0647\u0631 Cast\u0650 \u062a\u0627\u06cc\u067e-\u0627\u0634\u062a\u0628\u0627\u0647\u060c ClassCastException \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0646\u0633\u062e\u0647 Generic \u0647\u0631 \u062f\u0648 \u0645\u0634\u06a9\u0644 \u0631\u0627 \u062d\u0630\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package com.example.generics;\n\npublic class GenericsType&lt;T&gt; {\n\n    private T t;\n\n    public T get() {\n        return this.t;\n    }\n\n    public void set(T t1) {\n        this.t = t1;\n    }\n\n    public static void main(String&#91;] args) {\n        GenericsType&lt;String&gt; type = new GenericsType&lt;&gt;();\n        type.set(\"Sammy\"); \/\/ \u0645\u0639\u062a\u0628\u0631\n\n        GenericsType type1 = new GenericsType(); \/\/ raw type: \u0647\u0634\u062f\u0627\u0631 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631\n        type1.set(\"Sammy\"); \/\/ \u0645\u0639\u062a\u0628\u0631\n        type1.set(10);      \/\/ \u0645\u0639\u062a\u0628\u0631: autoboxing\u060c \u0627\u0645\u0627 \u0628\u062f\u0648\u0646 \u0627\u0645\u0646\u06cc\u062a \u062a\u0627\u06cc\u067e\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0642\u062a \u06a9\u0646\u06cc\u062f <code>GenericsType&lt;String&gt;<\/code> \u0647\u0646\u06af\u0627\u0645 \u0635\u062f\u0627 \u0632\u062f\u0646 <code>get()<\/code> \u0628\u0647 Cast \u0646\u06cc\u0627\u0632 \u0646\u062f\u0627\u0631\u062f. \u0627\u06af\u0631 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u062a\u0627\u06cc\u067e \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f (\u0645\u062a\u063a\u06cc\u0631 type1)\u060c \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0647\u0634\u062f\u0627\u0631 Raw-Type \u0635\u0627\u062f\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0648\u0642\u062a\u06cc \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u062a\u0627\u06cc\u067e\u06cc \u0641\u0631\u0627\u0647\u0645 \u0646\u0634\u062f\u0647\u060c \u062a\u0627\u06cc\u067e Object \u0645\u06cc\u200c\u0634\u0648\u062f\u061b \u06a9\u0647 \u0647\u0631 \u0645\u0642\u062f\u0627\u0631\u06cc \u0631\u0627 \u0645\u062c\u0627\u0632 \u062f\u0627\u0646\u0633\u062a\u0647 \u0648 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0631\u0627 \u0628\u0647 Cast \u0645\u062c\u0628\u0648\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f\u2014which \u0647\u0645\u0627\u0646 \u0631\u06cc\u0633\u06a9 ClassCastException \u0631\u0627 \u06a9\u0647 Generic\u0647\u0627 \u0628\u0631\u0627\u06cc \u062d\u0630\u0641\u0634 \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0628\u0648\u062f\u0646\u062f\u060c \u062f\u0648\u0628\u0627\u0631\u0647 \u0645\u0639\u0631\u0641\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0686\u0646\u062f \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0644\u0627\u0633 Generic \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u06cc\u0634 \u0627\u0632 \u06cc\u06a9 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\u0650 \u062c\u062f\u0627 \u0634\u062f\u0647 \u0628\u0627 \u0648\u06cc\u0631\u06af\u0648\u0644 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u062f. \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 <code>Map&lt;K, V&gt;<\/code> \u062f\u0631 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u062c\u0627\u0648\u0627\u060c \u0645\u062b\u0627\u0644 \u06a9\u0644\u0627\u0633\u06cc\u06a9 \u0627\u0633\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package com.example.generics;\n\n\/\/ \u06a9\u0644\u0627\u0633 Generic \u0628\u0627 \u062f\u0648 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\npublic class Pair&lt;K, V&gt; {\n\n    private K key;\n    private V value;\n\n    public Pair(K key, V value) {\n        this.key   = key;\n        this.value = value;\n    }\n\n    public K getKey()   { return key; }\n    public V getValue() { return value; }\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u062b\u0627\u0644 \u06a9\u0644\u0627\u0633 Generic: Pair \u062a\u0627\u06cc\u067e\u200c\u0634\u062f\u0647<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062b\u0627\u0644 \u0632\u06cc\u0631 Pair \u0631\u0627 \u0628\u0627 \u062f\u0648 \u062a\u0627\u06cc\u067e \u0639\u06cc\u0646\u06cc Instantiate \u0645\u06cc\u200c\u06a9\u0646\u062f. \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0647\u0631 \u062a\u0627\u06cc\u067e \u0631\u0627 \u0645\u0633\u062a\u0642\u0644 \u0627\u0644\u0632\u0627\u0645\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public class PairDemo {\n    public static void main(String&#91;] args) {\n        Pair&lt;String, Integer&gt; entry = new Pair&lt;&gt;(\"score\", 42);\n\n        String label = entry.getKey();   \/\/ \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 cast\n        int    score = entry.getValue(); \/\/ \u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 cast\n\n        System.out.println(label + \": \" + score);\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062e\u0631\u0648\u062c\u06cc:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>score: 42<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>\u0646\u06a9\u062a\u0647:<\/strong> \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 \u0627\u0646\u0648\u062a\u06cc\u0634\u0646 <code>@SuppressWarnings(\"rawtypes\")<\/code> \u0628\u0631\u0627\u06cc \u0633\u0631\u06a9\u0648\u0628 \u0647\u0634\u062f\u0627\u0631 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u200c\u0686\u0646\u06cc\u0646 \u062f\u0642\u062a \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0627\u0632 autoboxing \u062c\u0627\u0648\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 Generic \u062f\u0631 \u062c\u0627\u0648\u0627<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u062a\u0639\u0631\u06cc\u0641 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 Generic<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 Generic\u060c \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u0631\u0627 \u062f\u0631\u0633\u062a \u0645\u062b\u0644 \u06a9\u0644\u0627\u0633 Generic \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 <code>Comparable&lt;T&gt;<\/code> \u0627\u0632 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u062c\u0627\u0648\u0627\u060c \u0645\u062b\u0627\u0644 \u0634\u0646\u0627\u062e\u062a\u0647\u200c\u0634\u062f\u0647\u200c\u0627\u06cc \u0627\u0633\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package java.lang;\n\npublic interface Comparable&lt;T&gt; {\n    public int compareTo(T o);\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633\u0647\u0627\u06cc Generic \u062e\u0648\u062f\u062a\u0627\u0646 \u0631\u0627 \u0628\u0647 \u0647\u0645\u06cc\u0646 \u0634\u06a9\u0644 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f. \u0645\u062b\u0627\u0644 \u0632\u06cc\u0631 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 <code>Repository&lt;T&gt;<\/code> \u0631\u0627 \u0628\u0631\u0627\u06cc \u0642\u0631\u0627\u0631\u062f\u0627\u062f \u062f\u0633\u062a\u0631\u0633\u06cc-\u0628\u0647-\u062f\u0627\u062f\u0647\u0654 \u0633\u0627\u062f\u0647\u200c\u0627\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package com.example.generics;\n\nimport java.util.List;\n\n\/\/ \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 Generic\u0650 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc\u200c\u0634\u062f\u0647 \u0631\u0648\u06cc \u062a\u0627\u06cc\u067e \u0645\u0648\u062c\u0648\u062f\u06cc\u062a\npublic interface Repository&lt;T&gt; {\n    void save(T entity);\n    T findById(int id);\n    List&lt;T&gt; findAll();\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 Generic \u0628\u0627 \u062a\u0627\u06cc\u067e \u0639\u06cc\u0646\u06cc<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 Generic\u0627\u06cc \u0631\u0627 \u0628\u0627 \u062a\u0627\u06cc\u067e \u0634\u0646\u0627\u062e\u062a\u0647\u200c\u0634\u062f\u0647\u200c\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0631\u0627 \u0628\u0627 \u06a9\u0644\u0627\u0633 \u0645\u0634\u062e\u0635\u06cc \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package com.example.generics;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class UserRepository implements Repository&lt;String&gt; {\n\n    private final List&lt;String&gt; store = new ArrayList&lt;&gt;();\n\n    @Override\n    public void save(String entity) { store.add(entity); }\n\n    @Override\n    public String findById(int id) { return store.get(id); }\n\n    @Override\n    public List&lt;String&gt; findAll() { return store; }\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 Generic \u0628\u0627 \u06a9\u0644\u0627\u0633 Generic<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0644\u0627\u0633 \u067e\u06cc\u0627\u062f\u0647\u200c\u06a9\u0646\u0646\u062f\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f Generic \u0628\u0645\u0627\u0646\u062f\u0647 \u0648 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0631\u0627 \u0639\u0628\u0648\u0631 \u0628\u062f\u0647\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package com.example.generics;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\n\/\/ \u06a9\u0644\u0627\u0633 \u067e\u06cc\u0627\u062f\u0647\u200c\u06a9\u0646\u0646\u062f\u0647 \u0647\u0645 Generic \u0627\u0633\u062a\npublic class InMemoryRepository&lt;T&gt; implements Repository&lt;T&gt; {\n\n    private final List&lt;T&gt; store = new ArrayList&lt;&gt;();\n\n    @Override\n    public void save(T entity) { store.add(entity); }\n\n    @Override\n    public T findById(int id) { return store.get(id); }\n\n    @Override\n    public List&lt;T&gt; findAll() { return store; }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645\u200c\u0686\u0646\u06cc\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0686\u0646\u062f \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f\u2014\u0645\u062b\u0644 <code>Map&lt;K, V&gt;<\/code>\u2014\u0648 \u0645\u0642\u0627\u062f\u06cc\u0631 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc\u200c\u0634\u062f\u0647 \u0628\u0647 \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc \u0628\u062f\u0647\u06cc\u062f: <code>new HashMap&lt;String, List&lt;String&gt;&gt;()<\/code> \u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0647\u0627\u06cc \u0646\u0627\u0645\u200c\u06af\u0630\u0627\u0631\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0627\u0645\u0647\u0627\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0637\u0628\u0642 \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u060c \u062d\u0631\u0648\u0641 \u0628\u0632\u0631\u06af \u0645\u0646\u0641\u0631\u062f\u06cc\u200c\u0627\u0646\u062f\u061b \u06a9\u0647 \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0627\u0632 \u0646\u0638\u0631 \u0628\u0635\u0631\u06cc \u0627\u0632 \u0646\u0627\u0645\u0647\u0627\u06cc \u06a9\u0644\u0627\u0633 \u0648 \u0645\u062a\u063a\u06cc\u0631 \u0645\u062a\u0645\u0627\u06cc\u0632 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u067e\u06cc\u0631\u0648\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0647\u0627\u060c \u06a9\u062f Generic \u0631\u0627 \u0628\u0627 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0648 API\u0647\u0627\u06cc \u0634\u062e\u0635 \u062b\u0627\u0644\u062b \u0633\u0627\u0632\u06af\u0627\u0631 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u062f.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e<\/th><th>\u0645\u0639\u0646\u06cc<\/th><th>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0631\u0627\u06cc\u062c<\/th><\/tr><\/thead><tbody><tr><td>T<\/td><td>Type (\u062a\u0627\u06cc\u067e)<\/td><td>\u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0647\u0645\u0647-\u0645\u0646\u0638\u0648\u0631\u0647<\/td><\/tr><tr><td>E<\/td><td>Element (\u0639\u0646\u0635\u0631)<\/td><td>Collection\u0647\u0627: <code>ArrayList&lt;E&gt;<\/code>\u060c <code>Set&lt;E&gt;<\/code><\/td><\/tr><tr><td>K<\/td><td>Key (\u06a9\u0644\u06cc\u062f)<\/td><td>\u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc Map: <code>Map&lt;K, V&gt;<\/code><\/td><\/tr><tr><td>V<\/td><td>Value (\u0645\u0642\u062f\u0627\u0631)<\/td><td>\u0645\u0642\u0627\u062f\u06cc\u0631 Map: <code>Map&lt;K, V&gt;<\/code><\/td><\/tr><tr><td>N<\/td><td>Number (\u0639\u062f\u062f)<\/td><td>\u0639\u0645\u0644\u06cc\u0627\u062a \u0639\u062f\u062f\u06cc<\/td><\/tr><tr><td>R<\/td><td>Result (\u0646\u062a\u06cc\u062c\u0647)<\/td><td>\u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u0628\u0627\u0632\u06af\u0634\u062a\u06cc \u062a\u0627\u0628\u0639: <code>Function&lt;T, R&gt;<\/code><\/td><\/tr><tr><td>S\u060c U\u060c W<\/td><td>\u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc<\/td><td>\u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u06f2\u0645\u060c \u06f3\u0645 \u0648 \u06f4\u0645 \u0648\u0642\u062a\u06cc T \u062f\u0631 Scope \u0627\u0633\u062a<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u0645\u062a\u062f Generic \u062f\u0631 \u062c\u0627\u0648\u0627<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u0633\u06cc\u0646\u062a\u06a9\u0633 \u062a\u0639\u0631\u06cc\u0641 \u0645\u062a\u062f Generic<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062a\u062f Generic\u060c \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u062e\u0648\u062f\u0634 \u0631\u0627 \u0642\u0628\u0644 \u0627\u0632 \u062a\u0627\u06cc\u067e \u0628\u0627\u0632\u06af\u0634\u062a\u06cc \u062f\u0631 \u0627\u0645\u0636\u0627\u06cc \u0645\u062a\u062f \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0641\u0642\u0637 \u0628\u0647 \u0647\u0645\u0627\u0646 \u0645\u062a\u062f \u0645\u062d\u062f\u0648\u062f \u0627\u0633\u062a\u2014\u0641\u0627\u0631\u063a \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u06a9\u0644\u0627\u0633 \u0627\u062d\u0627\u0637\u0647\u200c\u06a9\u0646\u0646\u062f\u0647 \u062e\u0648\u062f\u0634 Generic \u0628\u0627\u0634\u062f \u06cc\u0627 \u0646\u0647. \u0686\u0648\u0646 Constructor \u0646\u0648\u0639 \u062e\u0627\u0635\u06cc \u0627\u0632 \u0645\u062a\u062f \u0627\u0633\u062a\u060c Constructor\u0647\u0627 \u0647\u0645 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0634\u06a9\u0644 \u06a9\u0644\u06cc \u0627\u06cc\u0646 \u0627\u0633\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public static &lt;T&gt; ReturnType methodName(T param) { ... }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u062a\u062f Generic \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 \u06a9\u0644\u0627\u0633 Generic<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u0628\u064f\u0639\u062f<\/th><th>\u06a9\u0644\u0627\u0633 Generic<\/th><th>\u0645\u062a\u062f Generic<\/th><\/tr><\/thead><tbody><tr><td>Scope \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e<\/td><td>\u06a9\u0644 \u06a9\u0644\u0627\u0633<\/td><td>\u0645\u062a\u062f \u0645\u0646\u0641\u0631\u062f<\/td><\/tr><tr><td>\u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647<\/td><td>\u0634\u06cc\u0621 \u06a9\u0627\u0646\u062a\u06cc\u0646\u0631\u06cc \u062a\u0627\u06cc\u067e\u200c\u0634\u062f\u0647<\/td><td>\u06cc\u06a9 \u0639\u0645\u0644\u06cc\u0627\u062a \u062a\u0627\u06cc\u067e-\u0645\u062a\u062c\u0627\u0647\u0644<\/td><\/tr><tr><td>Instantiate \u0634\u062f\u0646<\/td><td>\u0647\u0646\u06af\u0627\u0645 \u0633\u0627\u062e\u062a \u0634\u06cc\u0621<\/td><td>\u0628\u0647\u200c\u0627\u0632\u0627\u06cc \u0647\u0631 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0627\u0633\u062a\u0646\u0628\u0627\u0637 \u0645\u06cc\u200c\u0634\u0648\u062f<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u062b\u0627\u0644 \u0645\u062a\u062f Generic: \u062c\u0627\u0628\u0647\u200c\u062c\u0627\u06cc\u06cc \u0639\u0646\u0627\u0635\u0631 \u0622\u0631\u0627\u06cc\u0647<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062a\u062f Generic \u0632\u06cc\u0631 \u062f\u0648 \u0639\u0646\u0635\u0631 \u0631\u0627 \u062f\u0631 \u0647\u0631 \u0622\u0631\u0627\u06cc\u0647 \u062a\u0627\u06cc\u067e\u200c\u0634\u062f\u0647\u200c\u0627\u06cc \u062c\u0627\u0628\u0647\u200c\u062c\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u062a\u0627\u06cc\u067e T \u0627\u0632 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u0622\u0631\u0627\u06cc\u0647 \u0627\u0633\u062a\u0646\u0628\u0627\u0637 \u0645\u06cc\u200c\u0634\u0648\u062f\u061b \u0647\u06cc\u0686 \u062a\u0639\u06cc\u06cc\u0646 \u062a\u0627\u06cc\u067e \u0635\u0631\u06cc\u062d\u06cc \u0627\u0632 Caller \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package com.example.generics;\n\nimport java.util.Arrays;\n\npublic class ArrayUtils {\n\n    \/\/ T \u062f\u0631 \u0645\u062d\u0644 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0627\u0632 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u0622\u0631\u0627\u06cc\u0647 \u0627\u0633\u062a\u0646\u0628\u0627\u0637 \u0645\u06cc\u200c\u0634\u0648\u062f\n    public static &lt;T&gt; void swap(T&#91;] array, int i, int j) {\n        T temp   = array&#91;i];\n        array&#91;i] = array&#91;j];\n        array&#91;j] = temp;\n    }\n\n    public static void main(String&#91;] args) {\n        String&#91;] words = {\"alpha\", \"beta\", \"gamma\"};\n        System.out.println(\"Before: \" + Arrays.toString(words));\n\n        swap(words, 0, 2); \/\/ T \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 String \u0627\u0633\u062a\u0646\u0628\u0627\u0637 \u0645\u06cc\u200c\u0634\u0648\u062f\n\n        System.out.println(\"After:  \" + Arrays.toString(words));\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062e\u0631\u0648\u062c\u06cc:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Before: &#91;alpha, beta, gamma]\nAfter:  &#91;gamma, beta, alpha]<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u062c\u0627 \u0645\u062b\u0627\u0644 \u0627\u0636\u0627\u0641\u06cc\u200c\u0627\u06cc \u0628\u0627 \u0627\u0644\u06af\u0648\u06cc isEqual \u0622\u0645\u062f\u0647\u2014\u06a9\u0647 \u0647\u0645 \u062a\u0639\u06cc\u06cc\u0646 \u062a\u0627\u06cc\u067e \u0635\u0631\u06cc\u062d \u0648 \u0647\u0645 \u0627\u0633\u062a\u0646\u0628\u0627\u0637 \u062a\u0627\u06cc\u067e \u0631\u0627 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package com.example.generics;\n\npublic class GenericsMethods {\n\n    \/\/ \u0645\u062a\u062f Generic: T \u0642\u0628\u0644 \u0627\u0632 \u062a\u0627\u06cc\u067e \u0628\u0627\u0632\u06af\u0634\u062a\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647\n    public static &lt;T&gt; boolean isEqual(GenericsType&lt;T&gt; g1, GenericsType&lt;T&gt; g2) {\n        return java.util.Objects.equals(g1.get(), g2.get());\n    }\n\n    public static void main(String&#91;] args) {\n        GenericsType&lt;String&gt; g1 = new GenericsType&lt;&gt;();\n        g1.set(\"Sammy\");\n\n        GenericsType&lt;String&gt; g2 = new GenericsType&lt;&gt;();\n        g2.set(\"Sammy\");\n\n        \/\/ type witness \u0635\u0631\u06cc\u062d\n        boolean isEqual = GenericsMethods.&lt;String&gt;isEqual(g1, g2);\n        \/\/ \u0627\u0633\u062a\u0646\u0628\u0627\u0637 \u062a\u0627\u06cc\u067e: \u062a\u0631\u062c\u06cc\u062d\u200c\u062f\u0627\u062f\u0647\u200c\u0634\u062f\u0647\n        isEqual = GenericsMethods.isEqual(g1, g2);\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Constructor\u0647\u0627 \u0647\u0645 \u0627\u0632 \u0647\u0645\u0627\u0646 \u0633\u06cc\u0646\u062a\u06a9\u0633 \u067e\u06cc\u0631\u0648\u06cc \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f. Constructor Generic\u060c \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u062e\u0648\u062f\u0634 \u0631\u0627 \u0642\u0628\u0644 \u0627\u0632 \u0646\u0627\u0645 \u06a9\u0644\u0627\u0633 \u062f\u0631 \u0627\u0645\u0636\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f\u2014\u0645\u0633\u062a\u0642\u0644 \u0627\u0632 \u0647\u0631 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\u06cc \u0631\u0648\u06cc \u06a9\u0644\u0627\u0633 \u0627\u062d\u0627\u0637\u0647\u200c\u06a9\u0646\u0646\u062f\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public class Wrapper {\n    private final Object value;\n\n    \/\/ Constructor Generic: T \u0631\u0627 \u0627\u0632 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u0627\u0633\u062a\u0646\u0628\u0627\u0637\u060c \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 Object \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f\n    public &lt;T&gt; Wrapper(T value) {\n        this.value = value;\n    }\n\n    public Object get() { return value; }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>&lt;String&gt;<\/code> \u062f\u0631 <code>GenericsMethods.&lt;String&gt;isEqual(g1, g2)<\/code> \u06cc\u06a9 <strong>Type Witness \u0635\u0631\u06cc\u062d<\/strong> \u0627\u0633\u062a. \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u062f\u0648\u0645 \u0622\u0646 \u0631\u0627 \u06a9\u0627\u0645\u0644\u0627\u064b \u062d\u0630\u0641 \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0647 \u0627\u0633\u062a\u0646\u0628\u0627\u0637 \u062a\u0627\u06cc\u067e \u062a\u06a9\u06cc\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f: \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 T \u0631\u0627 \u0627\u0632 \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc g1 \u0648 g2 \u0627\u0633\u062a\u0646\u0628\u0627\u0637 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u0633\u062a\u0646\u0628\u0627\u0637 \u062a\u0627\u06cc\u067e \u0628\u0631\u0627\u06cc \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u062a\u062f\u0647\u0627\u06cc Generic \u0627\u0632 \u062c\u0627\u0648\u0627 \u06f5 \u0645\u0648\u062c\u0648\u062f \u0628\u0648\u062f\u0647 \u0648 Release\u0647\u0627\u06cc \u0628\u0639\u062f\u06cc \u0627\u0633\u062a\u0646\u0628\u0627\u0637 \u0631\u0627 \u0628\u06cc\u0634\u062a\u0631 \u0628\u0647\u0628\u0648\u062f \u062f\u0627\u062f\u0646\u062f\u061b \u067e\u0633 \u062d\u0630\u0641 Type Witness \u0635\u0631\u06cc\u062d\u060c \u0633\u0628\u06a9 \u062a\u0631\u062c\u06cc\u062d\u200c\u062f\u0627\u062f\u0647\u200c\u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u0645\u062d\u062f\u0648\u062f\u0634\u062f\u0647 (Bounded Type Parameters)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u0645\u062d\u062f\u0648\u062f\u0634\u062f\u0647\u060c \u0627\u06cc\u0646\u06a9\u0647 \u06a9\u062f\u0627\u0645 \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u0639\u06cc\u0646\u06cc \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0634\u0648\u0646\u062f \u0631\u0627 \u0645\u062d\u062f\u0648\u062f \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u0628\u0627 Bound \u0628\u0627\u0644\u0627\u06cc\u06cc (extends)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 <code>extends<\/code> \u0628\u0631\u0627\u06cc \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0628\u0647 \u06a9\u0644\u0627\u0633 \u06cc\u0627 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 \u0645\u0634\u062e\u0635\u06cc \u0648 \u0647\u0645\u0647 \u0632\u06cc\u0631\u062a\u0627\u06cc\u067e\u0647\u0627\u06cc\u0634 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0645\u062a\u062f \u0632\u06cc\u0631 \u0647\u0631 \u062a\u0627\u06cc\u067e\u06cc \u0631\u0627 \u0645\u06cc\u200c\u067e\u0630\u06cc\u0631\u062f \u06a9\u0647 <code>Comparable&lt;T&gt;<\/code> \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u06a9\u0646\u062f\u2014\u0648 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f compareTo \u0645\u0648\u062c\u0648\u062f \u0627\u0633\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public static &lt;T extends Comparable&lt;T&gt;&gt; int compare(T t1, T t2) {\n    return t1.compareTo(t2);\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u062a\u0627\u06cc\u067e\u06cc \u0631\u0627 \u067e\u0627\u0633 \u0628\u062f\u0647\u06cc\u062f \u06a9\u0647 Comparable \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0646\u06a9\u0631\u062f\u0647\u060c \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0631\u0627 \u0631\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f. \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u0645\u062d\u062f\u0648\u062f\u0634\u062f\u0647 \u0628\u0647\u200c\u0637\u0648\u0631 \u0645\u0633\u0627\u0648\u06cc \u0631\u0648\u06cc \u06a9\u0644\u0627\u0633\u0647\u0627\u060c \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633\u0647\u0627 \u0648 \u0645\u062a\u062f\u0647\u0627 \u0627\u0639\u0645\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u0628\u0627 Bound \u067e\u0627\u06cc\u06cc\u0646\u06cc (super)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u062c\u0627\u0648\u0627 \u0627\u062c\u0627\u0632\u0647 Bound \u067e\u0627\u06cc\u06cc\u0646\u06cc \u0631\u0648\u06cc \u062a\u0639\u0631\u06cc\u0641 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0646\u0645\u06cc\u200c\u062f\u0647\u062f: <code>&lt;T super Number&gt;<\/code> \u0633\u06cc\u0646\u062a\u06a9\u0633 \u0645\u0639\u062a\u0628\u0631\u06cc \u0646\u06cc\u0633\u062a. \u062a\u0639\u0631\u06cc\u0641 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0641\u0642\u0637 Bound \u0628\u0627\u0644\u0627\u06cc\u06cc (extends) \u0631\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0648\u0642\u062a\u06cc \u00ab\u0627\u06cc\u0646 \u062a\u0627\u06cc\u067e \u06cc\u0627 \u0647\u0631 Supertype\u0647\u0627\u06cc\u0634\u00bb \u0644\u0627\u0632\u0645 \u062f\u0627\u0631\u06cc\u062f\u060c \u0627\u0632 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 Wildcard \u06cc\u0639\u0646\u06cc <code>? super T<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f\u2014that \u062f\u0631 \u0628\u062e\u0634 Wildcard\u0647\u0627 \u067e\u0648\u0634\u0634 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Bound\u0647\u0627\u06cc \u0645\u062a\u0639\u062f\u062f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0686\u0646\u062f \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 \u0648 \u062d\u062f\u0627\u06a9\u062b\u0631 \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u0631\u0627 Extend \u06a9\u0646\u062f. \u06a9\u0644\u0627\u0633 \u0628\u0627\u06cc\u062f \u0627\u0648\u0644 \u0638\u0627\u0647\u0631 \u0634\u0648\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ T \u0628\u0627\u06cc\u062f \u0632\u06cc\u0631\u062a\u0627\u06cc\u067e Number \u0628\u0627\u0634\u062f \u06a9\u0647 \u0647\u0645\u200c\u0632\u0645\u0627\u0646 Comparable \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u06a9\u0646\u062f\npublic static &lt;T extends Number &amp; Comparable&lt;T&gt;&gt; T max(T a, T b) {\n    return a.compareTo(b) &gt;= 0 ? a : b;\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631 <code>&lt;T extends A &amp; B &amp; C&gt;<\/code>\u060c \u0627\u06af\u0631 A \u06a9\u0644\u0627\u0633 \u0628\u0627\u0634\u062f\u060c B \u0648 C \u0628\u0627\u06cc\u062f \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 \u0628\u0627\u0634\u0646\u062f. \u0628\u06cc\u0634 \u0627\u0632 \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u062f\u0631 \u0641\u0647\u0631\u0633\u062a Bound \u0645\u062c\u0627\u0632 \u0646\u06cc\u0633\u062a.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Generic\u0647\u0627 \u0648 \u0627\u0631\u062b\u200c\u0628\u0631\u06cc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627\u06cc\u067e\u0647\u0627\u06cc Generic\u060c \u0631\u0627\u0628\u0637\u0647 \u0632\u06cc\u0631\u062a\u0627\u06cc\u067e\u0650 \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0627\u0631\u062b \u0646\u0645\u06cc\u200c\u0628\u0631\u0646\u062f. \u062d\u062a\u06cc though String \u0632\u06cc\u0631\u062a\u0627\u06cc\u067e Object \u0627\u0633\u062a\u060c <code>MyClass&lt;String&gt;<\/code> \u0632\u06cc\u0631\u062a\u0627\u06cc\u067e <code>MyClass&lt;Object&gt;<\/code> \u0646\u06cc\u0633\u062a\u061b \u0627\u06cc\u0646 \u062f\u0648 \u062a\u0627\u06cc\u067e \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc\u200c\u0634\u062f\u0647 \u0646\u0627\u0645\u0631\u062a\u0628\u0637\u200c\u0627\u0646\u062f \u0648 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0627\u0646\u062a\u0633\u0627\u0628 \u0628\u06cc\u0646 \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0631\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0639\u0645\u062f\u06cc \u0627\u0633\u062a. \u0627\u06af\u0631 \u0627\u0646\u062a\u0633\u0627\u0628 \u0645\u062c\u0627\u0632 \u0628\u0648\u062f\u060c \u06a9\u062f \u0632\u06cc\u0631 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0645\u06cc\u200c\u0634\u062f \u0627\u0645\u0627 \u0627\u0645\u0646\u06cc\u062a \u062a\u0627\u06cc\u067e \u0631\u0627 \u0645\u06cc\u200c\u0634\u06a9\u0633\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package com.example.generics;\n\npublic class GenericsInheritance {\n\n    public static void main(String&#91;] args) {\n        String str = \"abc\";\n        Object obj = new Object();\n        obj = str; \/\/ \u0645\u0639\u062a\u0628\u0631: String \u0632\u06cc\u0631\u062a\u0627\u06cc\u067e Object \u0627\u0633\u062a\n\n        MyClass&lt;String&gt; myClass1 = new MyClass&lt;&gt;();\n        MyClass&lt;Object&gt; myClass2 = new MyClass&lt;&gt;();\n        \/\/ myClass2 = myClass1; \/\/ \u062e\u0637\u0627\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644: MyClass&lt;String&gt; \u06cc\u06a9 MyClass&lt;Object&gt; \u0646\u06cc\u0633\u062a\n        obj = myClass1;         \/\/ \u0645\u0639\u062a\u0628\u0631: MyClass&lt;T&gt; \u062e\u0648\u062f\u0634 \u0632\u06cc\u0631\u062a\u0627\u06cc\u067e Object \u0627\u0633\u062a\n    }\n\n    public static class MyClass&lt;T&gt; {}\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>MyClass&lt;String&gt;<\/code> \u0647\u0645\u0686\u0646\u0627\u0646 \u0634\u06cc\u0621 \u0645\u0639\u0645\u0648\u0644\u06cc\u200c\u0627\u06cc \u0627\u0632 \u06a9\u0644\u0627\u0633 MyClass \u0627\u0633\u062a\u061b \u067e\u0633 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 Object \u0627\u0646\u062a\u0633\u0627\u0628 \u0634\u0648\u062f. \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u06a9\u0646\u062f \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u062c\u0627\u06cc <code>MyClass&lt;Object&gt;<\/code> \u0628\u0627\u06cc\u0633\u062a\u062f. \u0627\u06cc\u0646 \u0631\u0627 \u0628\u0627 \u0622\u0631\u0627\u06cc\u0647\u0647\u0627\u06cc \u062c\u0627\u0648\u0627 \u0645\u0642\u0627\u06cc\u0633\u0647 \u06a9\u0646\u06cc\u062f\u2014which Covariant \u0647\u0633\u062a\u0646\u062f (<code>String[]<\/code> \u0628\u0647 <code>Object[]<\/code> \u0642\u0627\u0628\u0644 \u0627\u0646\u062a\u0633\u0627\u0628 \u0627\u0633\u062a). \u0647\u0645\u0627\u0646 Covariance \u062f\u0642\u06cc\u0642\u0627\u064b \u062f\u0644\u06cc\u0644 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0622\u0631\u0627\u06cc\u0647\u0647\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 ArrayStoreException \u067e\u0631\u062a\u0627\u0628 \u06a9\u0646\u0646\u062f. Generic\u0647\u0627 \u0628\u0627 Invariant \u0628\u0648\u062f\u0646\u060c \u0639\u0645\u062f\u0627\u064b \u0627\u0632 \u0627\u06cc\u0646 \u0627\u062c\u062a\u0646\u0627\u0628 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f. \u0648\u0642\u062a\u06cc \u0628\u0647 \u0627\u0646\u0639\u0637\u0627\u0641 \u0628\u06cc\u0646 \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u0645\u0631\u062a\u0628\u0637 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u062f\u060c \u0628\u0647\u200c\u062c\u0627\u06cc \u062a\u0644\u0627\u0634 \u0628\u0631\u0627\u06cc \u06af\u0633\u062a\u0631 \u062f\u0627\u062f\u0646 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u062a\u0627\u06cc\u067e\u060c \u0627\u0632 Wildcard \u0645\u062d\u062f\u0648\u062f\u0634\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u0628\u06cc\u0634\u200c\u0627\u0632\u062d\u062f \u0645\u062d\u062f\u0648\u062f: Caller\u0647\u0627\u06cc MyClass&lt;String&gt; \u0648 MyClass&lt;Integer&gt; \u0631\u0627 \u0631\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f\n\/\/ public static void process(MyClass&lt;Object&gt; obj) { }\n\n\/\/ \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f: MyClass&lt;String&gt;\u060c MyClass&lt;Integer&gt;\u060c \u0647\u0631 MyClass&lt;?&gt;\u0627\u06cc \u0631\u0627 \u0645\u06cc\u200c\u067e\u0630\u06cc\u0631\u062f\npublic static void process(MyClass&lt;?&gt; obj) { }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u06a9\u0644\u0627\u0633\u0647\u0627\u06cc Generic \u0648 Subtyping<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0631\u0627\u0628\u0637\u0647 \u0632\u06cc\u0631\u062a\u0627\u06cc\u067e \u0628\u06cc\u0646 \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc\u200c\u0634\u062f\u0647 \u0631\u0627 \u0628\u0627 Extend \u06cc\u0627 \u067e\u06cc\u0627\u062f\u0647 \u06a9\u0631\u062f\u0646 \u062a\u0627\u06cc\u067e Generic\u2014\u0647\u0645\u200c\u0632\u0645\u0627\u0646 \u0628\u0627 \u062b\u0627\u0628\u062a \u0646\u06af\u0647 \u062f\u0627\u0634\u062a\u0646 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u062a\u0627\u06cc\u067e\u2014\u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f. \u0686\u0648\u0646 <code>ArrayList&lt;E&gt;<\/code> \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 <code>List&lt;E&gt;<\/code> \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f\u2014which <code>Collection&lt;E&gt;<\/code> \u0631\u0627 Extend \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c <code>ArrayList&lt;String&gt;<\/code> \u0632\u06cc\u0631\u062a\u0627\u06cc\u067e <code>List&lt;String&gt;<\/code> \u0627\u0633\u062a\u061b \u06a9\u0647 \u062e\u0648\u062f\u0634 \u0632\u06cc\u0631\u062a\u0627\u06cc\u067e <code>Collection&lt;String&gt;<\/code> \u0627\u0633\u062a. \u0631\u0627\u0628\u0637\u0647 \u062a\u0627 \u0648\u0642\u062a\u06cc \u0628\u0631\u0642\u0631\u0627\u0631 \u0627\u0633\u062a \u06a9\u0647 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u062a\u0627\u06cc\u067e \u062a\u063a\u06cc\u06cc\u0631 \u0646\u06a9\u0646\u062f.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ MyList&lt;E, T&gt; \u0628\u0631\u0627\u06cc E \u062b\u0627\u0628\u062a\u060c \u0632\u06cc\u0631\u062a\u0627\u06cc\u067e List&lt;E&gt; \u0627\u0633\u062a\ninterface MyList&lt;E, T&gt; extends List&lt;E&gt; {\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0645 <code>MyList&lt;String, Object&gt;<\/code> \u0648 \u0647\u0645 <code>MyList&lt;String, Integer&gt;<\/code> \u0632\u06cc\u0631\u062a\u0627\u06cc\u067e <code>List&lt;String&gt;<\/code> \u0647\u0633\u062a\u0646\u062f\u061b \u0686\u0648\u0646 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u062a\u0627\u06cc\u067e \u0627\u0648\u0644 \u06cc\u0639\u0646\u06cc E\u060c String \u0645\u06cc\u200c\u0645\u0627\u0646\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Wildcard\u0647\u0627 \u062f\u0631 Generic \u062c\u0627\u0648\u0627<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0639\u0644\u0627\u0645\u062a \u0633\u0648\u0627\u0644 (<code>?<\/code>)\u060c \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 Wildcard \u062f\u0631 Generic\u0647\u0627\u06cc \u062c\u0627\u0648\u0627\u0633\u062a. \u0627\u06cc\u0646 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u062a\u0627\u06cc\u067e\u06cc \u0646\u0627\u0634\u0646\u0627\u062e\u062a\u0647 \u0631\u0627 \u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f. Wildcard\u0647\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0645\u062a\u062f\u060c \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u0641\u06cc\u0644\u062f \u06cc\u0627 \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u0645\u062a\u063a\u06cc\u0631 \u0645\u062d\u0644\u06cc \u0638\u0627\u0647\u0631 \u0634\u0648\u0646\u062f. \u0647\u0646\u06af\u0627\u0645 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u062a\u062f Generic \u06cc\u0627 Instantiate \u06a9\u0631\u062f\u0646 \u06a9\u0644\u0627\u0633 Generic \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 Wildcard\u0647\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Wildcard<\/th><th>\u0646\u0627\u0645<\/th><th>\u062e\u0648\u0627\u0646\u062f\u0646<\/th><th>\u0646\u0648\u0634\u062a\u0646<\/th><th>\u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u0639\u0645\u0648\u0644<\/th><\/tr><\/thead><tbody><tr><td><code>?<\/code><\/td><td>\u0646\u0627\u0645\u062d\u062f\u0648\u062f<\/td><td>\u0628\u0644\u0647\u060c \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 Object<\/td><td>\u0646\u0647\u2014\u0628\u0647\u200c\u062c\u0632 null<\/td><td>\u0686\u0627\u067e\/\u0634\u0645\u0627\u0631\u0634 \u0647\u0631 \u062a\u0627\u06cc\u067e<\/td><\/tr><tr><td><code>? extends T<\/code><\/td><td>Bound \u0628\u0627\u0644\u0627\u06cc\u06cc<\/td><td>\u0628\u0644\u0647\u060c \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 T<\/td><td>\u0646\u0647\u2014\u0628\u0647\u200c\u062c\u0632 null<\/td><td>Producer<\/td><\/tr><tr><td><code>? super T<\/code><\/td><td>Bound \u067e\u0627\u06cc\u06cc\u0646\u06cc<\/td><td>\u0628\u0644\u0647\u060c \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 Object<\/td><td>\u0628\u0644\u0647<\/td><td>\u0646\u0648\u0634\u062a\u0646 (Consumer)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>\u0642\u0627\u0639\u062f\u0647 PECS:<\/strong> \u0648\u0642\u062a\u06cc \u0645\u062a\u062f\u06cc \u0641\u0642\u0637 \u0627\u0632 \u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc\u200c\u0634\u062f\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0646\u062f (\u0645\u0642\u0627\u062f\u06cc\u0631\u06cc \u0627\u0632 \u062a\u0627\u06cc\u067e T \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f) \u0627\u0632 <code>? extends T<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0648\u0642\u062a\u06cc \u0645\u062a\u062f\u06cc \u0641\u0642\u0637 \u062f\u0631 \u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc\u200c\u0634\u062f\u0647 \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u062f (\u0645\u0642\u0627\u062f\u06cc\u0631\u06cc \u0627\u0632 \u062a\u0627\u06cc\u067e T \u0645\u0635\u0631\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f) \u0627\u0632 <code>? super T<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0627\u06af\u0631 \u0645\u062a\u062f \u0647\u0631 \u062f\u0648 \u0631\u0627 \u0644\u0627\u0632\u0645 \u062f\u0627\u0631\u062f\u060c \u0628\u0647\u200c\u062c\u0627\u06cc Wildcard \u0627\u0632 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0635\u0631\u06cc\u062d <code>&lt;T&gt;<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Wildcard \u0628\u0627 Bound \u0628\u0627\u0644\u0627\u06cc\u06cc (? extends T)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 <code>? extends T<\/code> \u0648\u0642\u062a\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0645\u062a\u062f\u06cc \u0641\u0642\u0637 \u0644\u0627\u0632\u0645 \u0627\u0633\u062a \u0627\u0632 Collection \u0628\u062e\u0648\u0627\u0646\u062f \u0648 \u0628\u0627\u06cc\u062f \u0647\u0631 \u0632\u06cc\u0631\u062a\u0627\u06cc\u067e\u0650 T \u0631\u0627 \u0628\u067e\u0630\u06cc\u0631\u062f. \u0628\u062f\u0648\u0646 \u0622\u0646\u060c \u0645\u062a\u062f\u06cc \u06a9\u0647 \u0628\u0647 <code>List&lt;Number&gt;<\/code> \u062a\u0627\u06cc\u067e \u0634\u062f\u0647\u060c <code>List&lt;Integer&gt;<\/code> \u0648 <code>List&lt;Double&gt;<\/code> \u0631\u0627 \u062f\u0631 \u0645\u062d\u0644 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0631\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f\u2014even though \u0647\u0631 \u062f\u0648 \u0645\u0642\u0627\u062f\u06cc\u0631 Number \u0645\u0639\u062a\u0628\u0631 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0646\u062f. \u062a\u0644\u0627\u0634 \u0627\u0648\u0644 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0631\u0627 <code>List&lt;Number&gt;<\/code> \u062a\u0627\u06cc\u067e \u06a9\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public static double sum(List&lt;Number&gt; list){\n  double sum = 0;\n  for(Number n : list){\n   sum += n.doubleValue();\n  }\n  return sum;\n }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u062f\u0648\u0646 Wildcard\u060c <code>List&lt;Number&gt;<\/code> \u06cc\u0639\u0646\u06cc <code>List&lt;Integer&gt;<\/code> \u0648 <code>List&lt;Double&gt;<\/code> \u0631\u062f \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u2014\u0686\u0648\u0646 \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc Generic Invariant \u0647\u0633\u062a\u0646\u062f. Wildcard \u0622\u0646 \u0627\u0646\u0639\u0637\u0627\u0641 \u0631\u0627 \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0646\u0633\u062e\u0647 \u0627\u0635\u0644\u0627\u062d\u200c\u0634\u062f\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package com.example.generics;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class GenericsWildcards {\n\n public static void main(String&#91;] args) {\n  List&lt;Integer&gt; ints = new ArrayList&lt;&gt;();\n  ints.add(3); ints.add(5); ints.add(10);\n  double sum = sum(ints);\n  System.out.println(\"Sum of ints=\"+sum);\n }\n\n public static double sum(List&lt;? extends Number&gt; list){\n  double sum = 0;\n  for(Number n : list){\n   sum += n.doubleValue();\n  }\n  return sum;\n }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062e\u0631\u0648\u062c\u06cc:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Sum of ints=18.0<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0631\u0648\u0646 sum\u060c \u0647\u0631 \u0639\u0646\u0635\u0631 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 Number \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0633\u062a\u061b \u067e\u0633 <code>doubleValue()<\/code> \u0631\u0648\u06cc \u0647\u0631 \u06a9\u062f\u0627\u0645 \u0645\u0648\u062c\u0648\u062f \u0627\u0633\u062a. <strong>\u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f\u2014to\u200c\u062c\u0632 null\u2014\u0686\u06cc\u0632\u06cc \u0628\u0647 <code>List&lt;? extends Number&gt;<\/code> \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<\/strong> \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0645\u06cc\u200c\u062f\u0627\u0646\u062f \u0644\u06cc\u0633\u062a \u06cc\u06a9\u06cc \u0627\u0632 \u0632\u06cc\u0631\u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u0645\u0634\u062e\u0635\u0650 Number \u0631\u0627 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u062f \u0627\u0645\u0627 \u0646\u0645\u06cc\u200c\u062f\u0627\u0646\u062f \u06a9\u062f\u0627\u0645\u061b \u067e\u0633 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u062f Integer\u0627\u06cc \u062f\u0631 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a <code>List&lt;Double&gt;<\/code> \u0628\u0627\u0634\u062f \u062f\u0631\u062c \u0634\u0648\u062f. \u0647\u0645\u06cc\u0646 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0641\u0642\u0637-\u062e\u0648\u0627\u0646\u062f\u0646\u06cc \u062f\u0642\u06cc\u0642\u0627\u064b \u062f\u0644\u06cc\u0644 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 <code>? extends<\/code> \u062f\u0631 PECS \u0646\u0634\u0627\u0646\u0647 Producer \u0627\u0633\u062a.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Wildcard \u0646\u0627\u0645\u062d\u062f\u0648\u062f (?)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 <code>?<\/code> \u0648\u0642\u062a\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0645\u062a\u062f \u0631\u0648\u06cc \u0639\u0646\u0627\u0635\u0631 \u0641\u0642\u0637\u2014from \u0637\u0631\u06cc\u0642 \u0645\u062a\u062f\u0647\u0627\u06cc Object (\u0645\u0627\u0646\u0646\u062f toString \u06cc\u0627 equals)\u2014\u0639\u0645\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0644\u0627\u0632\u0645 \u0646\u06cc\u0633\u062a \u062a\u0627\u06cc\u067e \u0639\u0646\u0635\u0631 \u0645\u0634\u062e\u0635 \u0631\u0627 \u0628\u062f\u0627\u0646\u062f. \u0627\u06cc\u0646 \u0645\u0639\u0627\u062f\u0644 <code>? extends Object<\/code> \u0627\u0633\u062a:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"> <code>public static void printData(List&lt;?&gt; list){\n  for(Object obj : list){\n   System.out.print(obj + \"::\");\n  }\n }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">printData \u06cc\u0639\u0646\u06cc <code>List&lt;String&gt;<\/code>\u060c <code>List&lt;Integer&gt;<\/code> \u06cc\u0627 \u0647\u0631 \u0644\u06cc\u0633\u062a \u062f\u06cc\u06af\u0631\u06cc \u0631\u0627 \u0645\u06cc\u200c\u067e\u0630\u06cc\u0631\u062f. \u0645\u062b\u0644 <code>? extends T<\/code>\u060c \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f\u2014to\u200c\u062c\u0632 null\u2014\u0686\u06cc\u0632\u06cc \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0642\u0637\u0647 \u0633\u0631\u062f\u0631\u06af\u0645\u06cc \u0631\u0627\u06cc\u062c\u060c <code>List&lt;?&gt;<\/code> \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 <code>List&lt;Object&gt;<\/code> \u0627\u0633\u062a. <code>List&lt;Object&gt;<\/code> \u0641\u0642\u0637 \u0644\u06cc\u0633\u062a\u06cc \u06a9\u0647 <code>List&lt;Object&gt;<\/code> \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u0631\u0627 \u0645\u06cc\u200c\u067e\u0630\u06cc\u0631\u062f \u0648 <code>List&lt;String&gt;<\/code> \u0631\u0627 \u0631\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f\u2014\u0686\u0648\u0646 \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc Generic Invariant \u0647\u0633\u062a\u0646\u062f. <code>List&lt;?&gt;<\/code> \u0644\u06cc\u0633\u062a\u06cc \u0628\u0627 \u0647\u0631 \u062a\u0627\u06cc\u067e \u0639\u0646\u0635\u0631\u06cc \u0631\u0627 \u0645\u06cc\u200c\u067e\u0630\u06cc\u0631\u062f \u0627\u0645\u0627 \u0639\u0646\u0627\u0635\u0631\u0634 \u0631\u0627 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0645\u0642\u062f\u0627\u0631\u0647\u0627\u06cc Object\u0650 \u0641\u0642\u0637-\u062e\u0648\u0627\u0646\u062f\u0646\u06cc \u0631\u0641\u062a\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u0632 <code>List&lt;?&gt;<\/code> \u0628\u0631\u0627\u06cc \u067e\u0630\u06cc\u0631\u0634 \u0647\u0631 \u0644\u06cc\u0633\u062a \u062a\u0627\u06cc\u067e\u200c\u0634\u062f\u0647\u200c\u0627\u06cc \u062f\u0631 \u0632\u0645\u06cc\u0646\u0647 \u0641\u0642\u0637-\u062e\u0648\u0627\u0646\u062f\u0646\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f\u061b \u0627\u0632 <code>List&lt;Object&gt;<\/code> \u0641\u0642\u0637 \u0648\u0642\u062a\u06cc \u06a9\u0647 \u0645\u0634\u062e\u0635\u0627\u064b \u0644\u06cc\u0633\u062a \u0642\u0627\u0628\u0644-\u0646\u0648\u0634\u062a\u0646\u0650 \u0627\u0634\u06cc\u0627\u0621 \u062f\u0644\u062e\u0648\u0627\u0647 \u0644\u0627\u0632\u0645 \u062f\u0627\u0631\u06cc\u062f.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ List&lt;Object&gt; \u0641\u0642\u0637 List&lt;Object&gt; \u0631\u0627 \u0645\u06cc\u200c\u067e\u0630\u06cc\u0631\u062f\npublic static void printObjects(List&lt;Object&gt; list) { }\n\/\/ printObjects(new ArrayList&lt;String&gt;());\n\/\/ \u062e\u0637\u0627\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644: List&lt;String&gt; \u06cc\u06a9 List&lt;Object&gt; \u0646\u06cc\u0633\u062a\n\n\/\/ List&lt;?&gt; \u0647\u0631 \u0644\u06cc\u0633\u062a \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc\u200c\u0634\u062f\u0647\u200c\u0627\u06cc \u0631\u0627 \u0645\u06cc\u200c\u067e\u0630\u06cc\u0631\u062f\npublic static void printAny(List&lt;?&gt; list) { }\n\/\/ printAny(new ArrayList&lt;String&gt;()); -- OK: \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0648 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u0634\u0648\u062f<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Wildcard \u0628\u0627 Bound \u067e\u0627\u06cc\u06cc\u0646\u06cc (? super T)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 <code>? super T<\/code> \u0648\u0642\u062a\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0645\u062a\u062f\u06cc \u0641\u0642\u0637 \u062f\u0631 Collection \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u062f \u0648 \u0628\u0627\u06cc\u062f \u0647\u0631 \u0644\u06cc\u0633\u062a\u06cc \u0631\u0627 \u0628\u067e\u0630\u06cc\u0631\u062f \u06a9\u0647 \u0628\u0647\u200c\u0637\u0648\u0631 \u0642\u0627\u0646\u0648\u0646\u06cc \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f T\u0627\u06cc \u0631\u0627 \u0646\u06af\u0647 \u062f\u0627\u0631\u062f. \u067e\u0627\u0631\u0627\u0645\u062a\u0631 <code>List&lt;Integer&gt;<\/code> \u0641\u0642\u0637 Caller\u0647\u0627\u06cc <code>List&lt;Integer&gt;<\/code> \u0631\u0627 \u0645\u06cc\u200c\u067e\u0630\u06cc\u0631\u062f. \u067e\u0627\u0631\u0627\u0645\u062a\u0631 <code>List&lt;? super Integer&gt;<\/code> \u06cc\u0639\u0646\u06cc <code>List&lt;Integer&gt;<\/code>\u060c <code>List&lt;Number&gt;<\/code> \u0648 <code>List&lt;Object&gt;<\/code> \u0631\u0627 \u0645\u06cc\u200c\u067e\u0630\u06cc\u0631\u062f\u061b \u0686\u0648\u0646 \u0647\u0631 \u0633\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0645\u0642\u062f\u0627\u0631 Integer \u0646\u06af\u0647 \u062f\u0627\u0631\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public static void addIntegers(List&lt;? super Integer&gt; list) {\n    list.add(1);\n    list.add(2);\n    list.add(3);\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0648\u0634\u062a\u0646\u0647\u0627 \u0627\u0645\u0646\u200c\u0627\u0646\u062f\u061b \u0686\u0648\u0646 \u0647\u0631 \u0644\u06cc\u0633\u062a\u0650 \u062a\u0627\u06cc\u067e\u200c\u0634\u062f\u0647 \u0628\u0647 <code>? super Integer<\/code> \u062a\u0636\u0645\u06cc\u0646\u200c\u0634\u062f\u0647 Integer \u0631\u0627 \u0645\u06cc\u200c\u067e\u0630\u06cc\u0631\u062f. \u0647\u0645\u0686\u0646\u0627\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0644\u06cc\u0633\u062a \u0628\u062e\u0648\u0627\u0646\u06cc\u062f\u060c \u0627\u0645\u0627 \u0639\u0646\u0627\u0635\u0631 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 Object \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0646\u062f\u2014\u0686\u0648\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0641\u0642\u0637 \u0645\u06cc\u200c\u062f\u0627\u0646\u062f \u062a\u0627\u06cc\u067e \u0639\u0646\u0635\u0631 \u06cc\u06a9\u06cc \u0627\u0632 Supertype\u0647\u0627\u06cc Integer \u0627\u0633\u062a. \u0647\u0645\u06cc\u0646 \u0631\u0641\u062a\u0627\u0631\u0650 \u0642\u0627\u0628\u0644-\u0646\u0648\u0634\u062a\u0646\/\u062e\u0648\u0627\u0646\u062f\u0646\u06cc-\u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646-Object \u062f\u0644\u06cc\u0644 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 <code>? super<\/code> \u062f\u0631 PECS \u0646\u0634\u0627\u0646\u0647 Consumer \u0627\u0633\u062a.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Wildcard\u0647\u0627 \u062f\u0631 \u0639\u0645\u0644: Producer \u0648 Consumer \u0628\u0627 \u0647\u0645<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">PECS \u0648\u0642\u062a\u06cc \u0627\u0631\u0632\u0634\u0634 \u0631\u0627 \u0627\u062b\u0628\u0627\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0645\u062a\u062f\u06cc \u0627\u0632 \u0633\u0627\u062e\u062a\u0627\u0631\u06cc \u0645\u06cc\u200c\u062e\u0648\u0627\u0646\u062f \u0648 \u062f\u0631 \u0633\u0627\u062e\u062a\u0627\u0631 \u062f\u06cc\u06af\u0631\u06cc \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u062f. <code>Collections.copy<\/code> \u062f\u0631 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f\u060c \u0645\u0648\u0631\u062f \u06a9\u0644\u0627\u0633\u06cc\u06a9 \u0627\u0633\u062a: \u0627\u0632 \u0645\u0646\u0628\u0639\u06cc \u0645\u06cc\u200c\u062e\u0648\u0627\u0646\u062f (Producer \u06cc\u0639\u0646\u06cc <code>? extends T<\/code>) \u0648 \u062f\u0631 \u0645\u0642\u0635\u062f\u06cc \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u062f (Consumer \u06cc\u0639\u0646\u06cc <code>? super T<\/code>):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public static &lt;T&gt; void copy(List&lt;? super T&gt; dest, List&lt;? extends T&gt; src) {\n    for (int i = 0; i &lt; src.size(); i++) {\n        dest.set(i, src.get(i)); \/\/ \u062e\u0648\u0627\u0646\u062f\u0646 T \u0627\u0632 src\u060c \u0646\u0648\u0634\u062a\u0646 T \u062f\u0631 dest\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646\u060c \u0645\u0642\u0635\u062f <code>List&lt;Object&gt;<\/code> \u0628\u0627 \u0645\u0646\u0628\u0639 <code>List&lt;Integer&gt;<\/code> \u0631\u0627 \u0645\u06cc\u200c\u067e\u0630\u06cc\u0631\u062f\u061b \u0686\u0648\u0646 Object \u06cc\u06a9 Supertype \u0648 Integer \u06cc\u06a9 \u0632\u06cc\u0631\u062a\u0627\u06cc\u067e \u0627\u0632 \u062a\u0627\u06cc\u067e \u0639\u0646\u0635\u0631 T \u0627\u0633\u062a. \u0647\u06cc\u0686\u200c\u06a9\u062f\u0627\u0645 \u0627\u0632 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0633\u062a <code>List&lt;T&gt;<\/code> \u0633\u0627\u062f\u0647\u200c\u0627\u06cc \u0628\u0627\u0634\u062f\u2014\u0628\u062f\u0648\u0646 \u0645\u062c\u0628\u0648\u0631 \u06a9\u0631\u062f\u0646 \u0647\u0631 \u062f\u0648 \u0644\u06cc\u0633\u062a \u0628\u0647 \u062a\u0627\u06cc\u067e \u0639\u0646\u0635\u0631 \u06cc\u06a9\u0633\u0627\u0646. \u06cc\u06a9 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0627\u0639\u0645\u0627\u0644 \u0645\u06cc\u200c\u0634\u0648\u062f: dest \u0628\u0627\u06cc\u062f \u0627\u0632 \u0642\u0628\u0644 \u062d\u062f\u0627\u0642\u0644 \u0628\u0647\u200c\u0627\u0646\u062f\u0627\u0632\u0647 src \u0639\u0646\u0635\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f\u061b \u0686\u0648\u0646 <code>List.set()<\/code> \u0648\u062c\u0648\u062f Index \u0631\u0627 \u0644\u0627\u0632\u0645 \u062f\u0627\u0631\u062f. \u067e\u0627\u0633 \u062f\u0627\u062f\u0646 ArrayList \u062e\u0627\u0644\u06cc \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 dest\u060c IndexOutOfBoundsException \u067e\u0631\u062a\u0627\u0628 \u0645\u06cc\u200c\u06a9\u0646\u062f. <code>Collections.copy<\/code> \u0648\u0627\u0642\u0639\u06cc \u0647\u0645\u06cc\u0646 \u0627\u0644\u0632\u0627\u0645 \u0631\u0627 \u062f\u0627\u0631\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0686\u0647 \u0632\u0645\u0627\u0646\u06cc \u0627\u0632 Wildcard \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 Wildcard \u0645\u062d\u062f\u0648\u062f\u0634\u062f\u0647 \u0648\u0642\u062a\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u067e\u0627\u0631\u0627\u0645\u0631\u06cc \u0645\u0633\u062a\u0642\u0644 \u0627\u0632 \u0628\u0642\u06cc\u0647 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627 \u0648 \u0627\u0632 \u062a\u0627\u06cc\u067e \u0628\u0627\u0632\u06af\u0634\u062a\u06cc \u0627\u0633\u062a. \u0627\u0632 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0635\u0631\u06cc\u062d <code>&lt;T&gt;<\/code> \u0648\u0642\u062a\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0645\u062a\u062f \u0628\u0627\u06cc\u062f \u0631\u0627\u0628\u0637\u0647\u200c\u0627\u06cc \u0628\u06cc\u0646 \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u0647\u0627 \u06cc\u0627 \u0628\u06cc\u0646 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u0648 \u0645\u0642\u062f\u0627\u0631 \u0628\u0627\u0632\u06af\u0634\u062a\u06cc \u0631\u0627 \u0627\u0644\u0632\u0627\u0645\u06cc \u06a9\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ &lt;T&gt; \u0644\u0627\u0632\u0645 \u062f\u0627\u0631\u062f: \u062a\u0627\u06cc\u067e \u0628\u0627\u0632\u06af\u0634\u062a\u06cc \u0628\u0647 \u062a\u0627\u06cc\u067e \u0639\u0646\u0635\u0631 \u06af\u0631\u0647 \u062e\u0648\u0631\u062f\u0647\npublic static &lt;T&gt; T firstElement(List&lt;T&gt; list) {\n    return list.get(0);\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 firstElement \u0627\u0632 <code>List&lt;?&gt;<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0631\u062f\u060c \u0641\u0642\u0637 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0633\u062a Object \u0628\u0631\u06af\u0631\u062f\u0627\u0646\u062f \u0648 \u0647\u0631 Caller \u0631\u0627 \u0628\u0647 Cast \u0645\u062c\u0628\u0648\u0631 \u06a9\u0646\u062f. \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0635\u0631\u06cc\u062d\u060c \u062a\u0627\u06cc\u067e \u0639\u0646\u0635\u0631 \u0631\u0627 \u062f\u0631 \u0633\u0631\u0627\u0633\u0631 \u0627\u0645\u0636\u0627\u06cc \u0645\u062a\u062f \u062d\u0641\u0638 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Wildcard Capture<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0645\u0636\u0627\u06cc Wildcard\u0650 \u062e\u0627\u0644\u06cc \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0639\u0646\u0635\u0631\u06cc \u0631\u0627 \u062f\u0631-\u062c\u0627\u06cc \u062e\u0648\u062f\u0634 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u062f\u061b \u0686\u0648\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0646\u0627\u0645\u06cc \u0628\u0631\u0627\u06cc \u062a\u0627\u06cc\u067e Capture-\u0634\u062f\u0647 \u0646\u062f\u0627\u0631\u062f. \u0631\u0627\u0647\u200c\u062d\u0644\u060c Helper \u062e\u0635\u0648\u0635\u06cc\u0650 Generic\u0627\u06cc \u0627\u0633\u062a \u06a9\u0647 Wildcard \u0631\u0627 \u062f\u0631 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\u0650 \u0646\u0627\u0645\u200c\u062f\u0627\u0631 Capture \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public static void swap(List&lt;?&gt; list, int i, int j) {\n    swapHelper(list, i, j); \/\/ wildcard \u062f\u0631\u0648\u0646 helper \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 T capture \u0645\u06cc\u200c\u0634\u0648\u062f\n}\n\nprivate static &lt;T&gt; void swapHelper(List&lt;T&gt; list, int i, int j) {\n    T temp = list.get(i);\n    list.set(i, list.get(j));\n    list.set(j, temp);\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u062f\u0631 \u0645\u062d\u0644 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc\u060c \u062a\u0627\u06cc\u067e \u0639\u06cc\u0646\u06cc \u0627\u0645\u0627 \u0628\u06cc\u200c\u0646\u0627\u0645\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc T \u0627\u0633\u062a\u0646\u0628\u0627\u0637 \u0645\u06cc\u200c\u06a9\u0646\u062f\u2014\u0641\u0631\u0627\u06cc\u0646\u062f\u06cc \u06a9\u0647 <strong>Wildcard Capture<\/strong> \u0646\u0627\u0645\u06cc\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0645\u062a\u062f \u0639\u0645\u0648\u0645\u06cc\u060c \u0627\u0645\u0636\u0627\u06cc \u0627\u0646\u0639\u0637\u0627\u0641\u200c\u067e\u0630\u06cc\u0631 <code>List&lt;?&gt;<\/code> \u0631\u0627 \u0627\u0641\u0634\u0627 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b Helper \u062e\u0635\u0648\u0635\u06cc\u060c \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\u0650 \u0646\u0627\u0645\u200c\u062f\u0627\u0631\u06cc \u0631\u0627 \u06a9\u0647 \u0639\u0645\u0644\u06cc\u0627\u062a swap \u0644\u0627\u0632\u0645 \u062f\u0627\u0631\u062f \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Subtyping \u0628\u0627 Wildcard \u0645\u0631\u0628\u0648\u0637 \u0628\u0647 Generic\u0647\u0627<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc\u200c\u0634\u062f\u0647\u0654 Wildcard\u060c \u0633\u0644\u0633\u0644\u0647\u200c\u0645\u0631\u0627\u062a\u0628 \u0632\u06cc\u0631\u062a\u0627\u06cc\u067e\u0650 \u062e\u0648\u062f\u0634\u0627\u0646 \u0631\u0627 \u062a\u0634\u06a9\u06cc\u0644 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f. \u0686\u0648\u0646 Integer \u0632\u06cc\u0631\u062a\u0627\u06cc\u067e Number \u0627\u0633\u062a\u060c <code>List&lt;? extends Integer&gt;<\/code> \u0632\u06cc\u0631\u062a\u0627\u06cc\u067e <code>List&lt;? extends Number&gt;<\/code> \u0627\u0633\u062a. \u0627\u06cc\u0646\u060c \u0627\u0646\u0639\u0637\u0627\u0641 Wildcard \u0631\u0627 \u062f\u0631 \u0637\u0648\u0644 \u0633\u0644\u0633\u0644\u0647\u200c\u0645\u0631\u0627\u062a\u0628 \u062a\u0627\u06cc\u067e \u06af\u0633\u062a\u0631\u0634 \u0645\u06cc\u200c\u062f\u0647\u062f\u2014\u0628\u062f\u0648\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u0645\u0631\u062a\u0628\u0637 \u0628\u0648\u062f\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc\u200c\u0633\u0627\u0632\u06cc\u0647\u0627\u06cc \u062e\u0627\u0645:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>List&lt;? extends Integer&gt; intList = new ArrayList&lt;&gt;();\nList&lt;? extends Number&gt; numList = intList;\n\/\/ OK: List&lt;? extends Integer&gt; \u0632\u06cc\u0631\u062a\u0627\u06cc\u067e List&lt;? extends Number&gt; \u0627\u0633\u062a<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Type Erasure \u062f\u0631 Generic\u0647\u0627\u06cc \u062c\u0627\u0648\u0627<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0686\u06af\u0648\u0646\u0647 \u0628\u0627 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u0631\u0641\u062a\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Type Erasure<\/strong>\u060c \u0633\u0627\u0632\u0648\u06a9\u0627\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0637\u06cc \u0622\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u062c\u0627\u0648\u0627 \u0647\u0645\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062a\u0627\u06cc\u067e Generic \u0631\u0627 \u0642\u0628\u0644 \u0627\u0632 \u062a\u0648\u0644\u06cc\u062f Bytecode \u062d\u0630\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u062a\u0635\u0645\u06cc\u0645 \u0637\u0631\u0627\u062d\u06cc \u0639\u0645\u062f\u06cc \u0628\u0631\u0627\u06cc \u062d\u0641\u0638 \u0633\u0627\u0632\u06af\u0627\u0631\u06cc Binary \u0628\u0627 \u0641\u0627\u06cc\u0644\u0647\u0627\u06cc \u06a9\u0644\u0627\u0633\u0650 \u0642\u0628\u0644 \u0627\u0632 \u062c\u0627\u0648\u0627 \u06f5 \u0628\u0648\u062f. \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627\u060c <code>List&lt;String&gt;<\/code> \u0648 <code>List&lt;Integer&gt;<\/code> \u0647\u0631 \u062f\u0648 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 Raw Type \u06cc\u0639\u0646\u06cc List \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u06cc\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u060c \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06f1. \u0647\u0631 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0631\u0627 \u0628\u0627 Bound\u0634\u2014\u06cc\u0627 \u0627\u06af\u0631 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0646\u0627\u0645\u062d\u062f\u0648\u062f \u0627\u0633\u062a \u0628\u0627 Object\u2014\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f.<br>\u06f2. \u062f\u0631 \u0635\u0648\u0631\u062a \u0646\u06cc\u0627\u0632\u060c Cast\u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u062d\u0641\u0638 \u0627\u0645\u0646\u06cc\u062a \u062a\u0627\u06cc\u067e\u2014from \u062f\u06cc\u062f Caller\u2014\u062f\u0631\u062c \u0645\u06cc\u200c\u06a9\u0646\u062f.<br>\u06f3. \u0645\u062a\u062f\u0647\u0627\u06cc Bridge \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f \u062a\u0627 Polymorphism \u062f\u0631 \u0632\u06cc\u0631\u06a9\u0644\u0627\u0633\u0647\u0627 \u062d\u0641\u0638 \u0634\u0648\u062f (\u0628\u0627\u0644\u0627 \u0631\u0627 \u0628\u0628\u06cc\u0646\u06cc\u062f).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u06cc\u0686 \u06a9\u0644\u0627\u0633 \u062c\u062f\u06cc\u062f\u06cc \u0628\u0631\u0627\u06cc \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc\u200c\u0634\u062f\u0647 \u0633\u0627\u062e\u062a\u0647 \u0646\u0645\u06cc\u200c\u0634\u0648\u062f\u061b \u067e\u0633 Generic\u0647\u0627 \u0647\u06cc\u0686 \u0633\u0631\u0628\u0627\u0631 \u062d\u0627\u0641\u0638\u0647 \u06cc\u0627 Class-Loading \u0632\u0645\u0627\u0646-\u0627\u062c\u0631\u0627\u06cc\u06cc \u0646\u062f\u0627\u0631\u0646\u062f. \u0645\u062b\u0644\u0627\u064b\u060c \u0628\u0627 \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 Generic:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public class Test&lt;T extends Comparable&lt;T&gt;&gt; {\n\n    private T data;\n    private Test&lt;T&gt; next;\n\n    public Test(T d, Test&lt;T&gt; n) {\n        this.data = d;\n        this.next = n;\n    }\n\n    public T getData() { return this.data; }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u062c\u0627\u0648\u0627 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0645\u062d\u062f\u0648\u062f\u0634\u062f\u0647\u0654 T \u0631\u0627 \u0628\u0627 \u0627\u0648\u0644\u06cc\u0646 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 Bound \u06cc\u0639\u0646\u06cc Comparable \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0631\u062f\u0647 \u0648 \u0627\u06cc\u0646 \u0631\u0627 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public class Test {\n\n    private Comparable data;\n    private Test next;\n\n    public Test(Comparable d, Test n) {\n        this.data = d;\n        this.next = n;\n    }\n\n    public Comparable getData() { return data; }\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u062a\u062f\u0647\u0627\u06cc Bridge<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u06a9\u0644\u0627\u0633 Generic\u0627\u06cc Extend \u0634\u0648\u062f \u06cc\u0627 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 Generic\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647 \u0634\u0648\u062f\u060c \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0645\u062a\u062f Synthetic\u0627\u06cc \u06a9\u0647 <strong>Bridge Method<\/strong> \u0646\u0627\u0645\u06cc\u062f\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f \u0631\u0627 \u0628\u0631\u0627\u06cc \u062d\u0641\u0638 Polymorphism \u0628\u0639\u062f \u0627\u0632 Erasure \u062a\u0648\u0644\u06cc\u062f \u06a9\u0646\u062f. \u06a9\u0644\u0627\u0633\u06cc \u0631\u0627 \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u062f \u06a9\u0647 <code>Comparable&lt;Node&gt;<\/code> \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public class Node implements Comparable&lt;Node&gt; {\n    public int compareTo(Node other) {\n        return 0; \/\/ \u0645\u0646\u0637\u0642 \u0645\u0642\u0627\u06cc\u0633\u0647\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0639\u062f \u0627\u0632 Erasure\u060c Comparable \u0645\u062a\u062f <code>compareTo(Object)<\/code> \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u0631\u0627\u06cc \u0645\u0639\u062a\u0628\u0631 \u0645\u0627\u0646\u062f\u0646 Override\u060c \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0645\u062a\u062f Bridge\u0627\u06cc \u062f\u0631\u062c \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0628\u0647 \u0646\u0633\u062e\u0647 \u062a\u0627\u06cc\u067e\u200c\u0634\u062f\u0647 \u062a\u0641\u0648\u06cc\u0636 \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u0645\u062a\u062f bridge \u0633\u0627\u062e\u062a\u06af\u06cc\u0650 \u062a\u0648\u0644\u06cc\u062f\u0634\u062f\u0647 \u062a\u0648\u0633\u0637 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631\u060c \u0647\u0631\u06af\u0632 \u062f\u0633\u062a\u06cc \u0646\u0648\u0634\u062a\u0647 \u0646\u0645\u06cc\u200c\u0634\u0648\u062f\npublic int compareTo(Object other) {\n    return compareTo((Node) other);\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062a\u062f\u0647\u0627\u06cc Bridge \u062f\u0631 \u0633\u0648\u0631\u0633 \u06a9\u062f \u0646\u0627\u0645\u0631\u0626\u06cc \u0627\u0645\u0627 \u062f\u0631 Bytecode \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u200c\u0634\u062f\u0647 \u0638\u0627\u0647\u0631 \u0634\u062f\u0647 \u0648 \u0628\u0627 <code>javap -verbose ClassName<\/code> \u0642\u0627\u0628\u0644 \u0645\u0634\u0627\u0647\u062f\u0647\u200c\u0627\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u067e\u06cc\u0627\u0645\u062f\u0647\u0627\u06cc \u0639\u0645\u0644\u06cc Type Erasure<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u0686\u06a9\u0647\u0627\u06cc <code>instanceof<\/code> \u0631\u0648\u06cc \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc\u200c\u0634\u062f\u0647 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0646\u0645\u06cc\u200c\u0634\u0648\u0646\u062f: <code>obj instanceof List&lt;String><\/code> \u062e\u0637\u0627\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0627\u0633\u062a.<\/li>\n\n\n\n<li>\u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0631\u0627 Instantiate \u06a9\u0646\u06cc\u062f: <code>new T()<\/code> \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0646\u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n\n\n\n<li>\u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0622\u0631\u0627\u06cc\u0647\u200c\u0627\u06cc \u0627\u0632 \u062a\u0627\u06cc\u067e \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc\u200c\u0634\u062f\u0647 \u0628\u0633\u0627\u0632\u06cc\u062f: <code>new T[10]<\/code> \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0646\u0645\u06cc\u200c\u0634\u0648\u062f.<\/li>\n\n\n\n<li>Overload\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0641\u0642\u0637 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u062a\u0627\u06cc\u067e \u062a\u0641\u0627\u0648\u062a \u062f\u0627\u0631\u0646\u062f\u060c \u062d\u06cc\u0646 Erasure \u062a\u0635\u0627\u062f\u0645 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f: <code>process(List&lt;String>)<\/code> \u0648 <code>process(List&lt;Integer>)<\/code> \u0647\u0631 \u062f\u0648 \u0628\u0647 <code>process(List)<\/code> \u062a\u0628\u062f\u06cc\u0644 \u0634\u062f\u0647 \u0648 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u062f\u0631 \u0647\u0645\u0627\u0646 \u06a9\u0644\u0627\u0633 \u0647\u0645\u200c\u0632\u06cc\u0633\u062a\u06cc \u06a9\u0646\u0646\u062f.<\/li>\n\n\n\n<li>\u0641\u06cc\u0644\u062f\u0647\u0627\u06cc Static \u0628\u06cc\u0646 \u0647\u0645\u0647 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc\u200c\u0633\u0627\u0632\u06cc\u200c\u0647\u0627 \u0645\u0634\u062a\u0631\u06a9\u200c\u0627\u0646\u062f\u061b \u0686\u0648\u0646 \u0641\u0642\u0637 \u06cc\u06a9 \u06a9\u0644\u0627\u0633 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0631\u062e\u0644\u0627\u0641 C# \u0648 Kotlin\u2014which \u0627\u0632 Generic\u0647\u0627\u06cc Reified \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f (\u0622\u0631\u06af\u0648\u0645\u0627\u0646\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u062d\u0641\u0638 \u0648 \u0627\u0632 \u0637\u0631\u06cc\u0642 Reflection \u062f\u0631 \u062f\u0633\u062a\u0631\u0633\u200c\u0627\u0646\u062f)\u060c \u062c\u0627\u0648\u0627 \u0627\u0632 Erasure \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f: \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u062f\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u062d\u0630\u0641 \u0634\u062f\u0647 \u0648 \u0631\u0648\u06cc Instance\u0647\u0627 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0646\u06cc\u0633\u062a\u0646\u062f. <strong>Project Valhalla<\/strong> \u062a\u0644\u0627\u0634 \u062c\u0627\u0631\u06cc \u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0648\u062f\u0646 Generic\u0647\u0627\u06cc \u062a\u062e\u0635\u0635\u06cc \u0631\u0648\u06cc Value Type\u0647\u0627 \u0628\u0647 \u062c\u0627\u0648\u0627\u0633\u062a\u2014which \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f Generic\u0647\u0627 \u0628\u062f\u0648\u0646 Boxing \u0631\u0648\u06cc Primitive\u0647\u0627 \u0639\u0645\u0644 \u06a9\u0631\u062f\u0647 \u0648 \u0628\u0631\u062e\u06cc \u0645\u062d\u062f\u0648\u062f\u06cc\u062a\u0647\u0627\u06cc \u0641\u0639\u0644\u06cc Erasure \u0631\u0627 \u06a9\u0627\u0647\u0634 \u0628\u062f\u0647\u0646\u062f. \u062a\u0627 \u0648\u0642\u062a\u06cc \u0639\u0631\u0636\u0647 \u0634\u0648\u062f\u060c Erasure \u0648 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a\u0647\u0627\u06cc\u0634 \u0645\u062f\u0644\u0650 \u0637\u0631\u0627\u062d\u06cc \u0628\u0627\u0642\u06cc \u0645\u06cc\u200c\u0645\u0627\u0646\u0646\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Generic\u0647\u0627 \u0628\u0627 Collection\u0647\u0627\u06cc \u062c\u0627\u0648\u0627<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Generic\u0647\u0627 \u0628\u0627 List\u060c Set \u0648 Map<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0641\u0631\u06cc\u0645\u200c\u0648\u0631\u06a9 Java Collections \u06a9\u0627\u0645\u0644\u0627\u064b \u0631\u0648\u06cc Generic\u0647\u0627 \u0628\u0646\u0627 \u0634\u062f\u0647. \u0645\u062b\u0627\u0644 \u0632\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0645\u0646-\u0627\u0632-\u0646\u0638\u0631-\u062a\u0627\u06cc\u067e \u0627\u0632 \u0633\u0647 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 \u0627\u0635\u0644\u06cc Collection \u0631\u0627\u2014\u0628\u062f\u0648\u0646 \u0647\u06cc\u0686 Cast \u0635\u0631\u06cc\u062d\u06cc\u2014\u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import java.util.*;\n\npublic class CollectionsDemo {\n    public static void main(String&#91;] args) {\n\n        \/\/ List: \u062f\u0646\u0628\u0627\u0644\u0647 \u0645\u0631\u062a\u0628\u060c \u0627\u062c\u0627\u0632\u0647 \u062a\u06a9\u0631\u0627\u0631\n        List&lt;String&gt; names = new ArrayList&lt;&gt;();\n        names.add(\"Alice\");\n        names.add(\"Bob\");\n\n        \/\/ Set: \u0646\u0627\u0645\u0631\u062a\u0628\u060c \u0628\u062f\u0648\u0646 \u062a\u06a9\u0631\u0627\u0631\n        Set&lt;Integer&gt; ids = new HashSet&lt;&gt;();\n        ids.add(101);\n        ids.add(102);\n\n        \/\/ Map: \u062c\u0641\u062a\u0647\u0627\u06cc \u06a9\u0644\u06cc\u062f-\u0645\u0642\u062f\u0627\u0631\n        \/\/ LinkedHashMap \u062a\u0631\u062a\u06cc\u0628 \u062f\u0631\u062c \u0631\u0627 \u0628\u0631\u0627\u06cc \u062e\u0631\u0648\u062c\u06cc \u067e\u0627\u06cc\u062f\u0627\u0631 \u062d\u0641\u0638 \u0645\u06cc\u200c\u06a9\u0646\u062f\n        Map&lt;String, Integer&gt; scores = new LinkedHashMap&lt;&gt;();\n        scores.put(\"Alice\", 95);\n        scores.put(\"Bob\", 87);\n\n        for (Map.Entry&lt;String, Integer&gt; entry : scores.entrySet()) {\n            System.out.println(entry.getKey() + \" -&gt; \" + entry.getValue());\n        }\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062e\u0631\u0648\u062c\u06cc:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Alice -&gt; 95\nBob -&gt; 87<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u0645\u0642\u0627\u06cc\u0633\u0647 \u06a9\u0646\u0627\u0631-\u0647\u0645\u0650 Raw Type \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 \u062a\u0627\u06cc\u067e Generic<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>\u0628\u064f\u0639\u062f<\/th><th>Raw Type (\u06cc\u0639\u0646\u06cc List)<\/th><th>\u062a\u0627\u06cc\u067e Generic (\u06cc\u0639\u0646\u06cc List)<\/th><\/tr><\/thead><tbody><tr><td>\u0628\u0631\u0631\u0633\u06cc \u062a\u0627\u06cc\u067e \u0632\u0645\u0627\u0646-\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644<\/td><td>\u0647\u06cc\u0686<\/td><td>\u062a\u0648\u0633\u0637 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0627\u0644\u0632\u0627\u0645\u06cc<\/td><\/tr><tr><td>Cast \u0635\u0631\u06cc\u062d \u0647\u0646\u06af\u0627\u0645 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0644\u0627\u0632\u0645<\/td><td>\u0628\u0644\u0647<\/td><td>\u062e\u06cc\u0631<\/td><\/tr><tr><td>\u0631\u06cc\u0633\u06a9 ClassCastException<\/td><td>\u0628\u0627\u0644\u0627 (\u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627)<\/td><td>\u062d\u0630\u0641\u200c\u0634\u062f\u0647<\/td><\/tr><tr><td>\u0647\u0634\u062f\u0627\u0631 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631<\/td><td>unchecked \/ rawtypes<\/td><td>\u0647\u06cc\u0686<\/td><\/tr><tr><td>\u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0639\u0642\u0628\u06cc<\/td><td>\u06a9\u062f \u0642\u0628\u0644 \u0627\u0632 \u062c\u0627\u0648\u0627 \u06f5<\/td><td>\u062c\u0627\u0648\u0627 \u06f5 \u0648 \u0628\u0639\u062f\u062a\u0631<\/td><\/tr><tr><td>\u062a\u0648\u0635\u06cc\u0647\u200c\u0634\u062f\u0647 \u062f\u0631 \u06a9\u062f \u062c\u062f\u06cc\u062f<\/td><td>\u062e\u06cc\u0631<\/td><td>\u0628\u0644\u0647<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Raw Type\u0647\u0627 \u0635\u0631\u0641\u0627\u064b \u0628\u0631\u0627\u06cc \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0639\u0642\u0628\u06cc \u0628\u0627 \u06a9\u062f\u0647\u0627\u06cc \u0646\u0648\u0634\u062a\u0647\u200c\u0634\u062f\u0647 \u0642\u0628\u0644 \u0627\u0632 \u062c\u0627\u0648\u0627 \u06f5 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u0646\u062f. Java Language Specification \u0635\u0631\u06cc\u062d\u0627\u064b \u0627\u0632 \u0627\u0633\u062a\u0641\u0627\u062f\u0647\u200c\u0634\u0627\u0646 \u062f\u0631 \u06a9\u062f \u062c\u062f\u06cc\u062f \u0645\u0646\u0639 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u0647\u0627\u06cc Generic \u062f\u0631 \u062c\u0627\u0648\u0627<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u062f\u0631 \u0645\u062a\u062f\u0647\u0627\u06cc API \u0639\u0645\u0648\u0645\u06cc \u0627\u0632 Wildcard \u0645\u062d\u062f\u0648\u062f\u0634\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0645\u062a\u062f\u06cc \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u062f \u06a9\u0647 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0634 \u0641\u0642\u0637 \u0644\u0627\u0632\u0645 \u0627\u0633\u062a \u0627\u0632 \u0627\u0648 \u062e\u0648\u0627\u0646\u062f\u0647 \u0634\u0648\u062f\u060c \u0627\u0632 <code>? extends T<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. \u0648\u0642\u062a\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0641\u0642\u0637 \u0644\u0627\u0632\u0645 \u0627\u0633\u062a \u062f\u0631 \u0627\u0648 \u0646\u0648\u0634\u062a\u0647 \u0634\u0648\u062f\u060c \u0627\u0632 <code>? super T<\/code>. \u0627\u06cc\u0646\u060c \u062f\u0627\u0645\u0646\u0647 Caller\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0645\u062a\u062f \u0631\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0646\u062f \u0631\u0627\u2014\u0628\u062f\u0648\u0646 \u0641\u062f\u0627 \u06a9\u0631\u062f\u0646 \u0627\u0645\u0646\u06cc\u062a \u062a\u0627\u06cc\u067e\u2014\u0628\u0647 \u062d\u062f\u0627\u06a9\u062b\u0631 \u0645\u06cc\u200c\u0631\u0633\u0627\u0646\u062f (\u0642\u0627\u0639\u062f\u0647 PECS \u062f\u0631 \u0639\u0645\u0644):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Producer: \u0627\u0632 Number\u0647\u0627 \u0645\u06cc\u200c\u062e\u0648\u0627\u0646\u062f\u061b \u067e\u0633 List&lt;Integer&gt;\u060c List&lt;Double&gt; \u0648... \u0631\u0627 \u0645\u06cc\u200c\u067e\u0630\u06cc\u0631\u062f\npublic static double sum(List&lt;? extends Number&gt; list) {\n    double total = 0;\n    for (Number n : list) {\n        total += n.doubleValue();\n    }\n    return total;\n}\n\n\/\/ Consumer: Integer \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u062f\u061b \u067e\u0633 List&lt;Integer&gt;\u060c List&lt;Number&gt;\u060c List&lt;Object&gt; \u0631\u0627 \u0645\u06cc\u200c\u067e\u0630\u06cc\u0631\u062f\npublic static void addIntegers(List&lt;? super Integer&gt; list) {\n    list.add(42);\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u062f\u0631 \u06a9\u062f \u062c\u062f\u06cc\u062f \u0627\u0632 Raw Type \u0627\u062c\u062a\u0646\u0627\u0628 \u06a9\u0646\u06cc\u062f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0647\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Raw Type\u060c \u0628\u0631\u0631\u0633\u06cc \u0632\u0645\u0627\u0646-\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0631\u0627 \u062f\u0648\u0631 \u0632\u062f\u0647 \u0648 ClassCastException \u0628\u0627\u0644\u0642\u0648\u0647\u200c\u0627\u06cc \u0631\u0627 \u0627\u0632 \u0632\u0645\u0627\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0628\u0647 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0645\u0646\u062a\u0642\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f. Raw Type\u0647\u0627 \u0631\u0627 \u0628\u0627 \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc\u200c\u0634\u062f\u0647 \u06cc\u0627 Wildcard \u0645\u062d\u062f\u0648\u062f\u0634\u062f\u0647 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>List rawNames      = new ArrayList();    \/\/ \u0627\u062c\u062a\u0646\u0627\u0628 \u06a9\u0646\u06cc\u062f\nList&lt;String&gt; names = new ArrayList&lt;&gt;();  \/\/ \u062a\u0631\u062c\u06cc\u062d \u0628\u062f\u0647\u06cc\u062f<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u0627\u0632 \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0647\u0627\u06cc \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0646\u0627\u0645\u200c\u06af\u0630\u0627\u0631\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u067e\u06cc\u0631\u0648\u06cc \u06a9\u0646\u06cc\u062f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 \u062d\u0631\u0648\u0641 \u0628\u0632\u0631\u06af \u0645\u0646\u0641\u0631\u062f (T\u060c E\u060c K\u060c V\u060c N) \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u0627\u0632 \u0646\u0638\u0631 \u0628\u0635\u0631\u06cc \u0627\u0632 \u0646\u0627\u0645\u0647\u0627\u06cc \u06a9\u0644\u0627\u0633 \u0645\u062a\u0645\u0627\u06cc\u0632 \u0628\u0645\u0627\u0646\u0646\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u062a\u0627 \u062c\u0627\u06cc \u0627\u0645\u06a9\u0627\u0646\u060c \u0645\u062a\u062f\u0647\u0627\u06cc Generic \u0631\u0627 \u0628\u0647 \u06a9\u0644\u0627\u0633\u0647\u0627\u06cc Generic \u062a\u0631\u062c\u06cc\u062d \u0628\u062f\u0647\u06cc\u062f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06af\u0631 \u0641\u0642\u0637 \u06cc\u06a9 \u0645\u062a\u062f \u062f\u0631 \u06a9\u0644\u0627\u0633\u06cc \u0628\u0647 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc\u200c\u0633\u0627\u0632\u06cc \u062a\u0627\u06cc\u067e \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f\u060c \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0631\u0627 \u0631\u0648\u06cc \u0645\u062a\u062f \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f\u2014\u0646\u0647 \u0631\u0648\u06cc \u06a9\u0644 \u06a9\u0644\u0627\u0633. \u0627\u06cc\u0646 Scope \u062a\u0627\u06cc\u067e \u0631\u0627 \u0645\u062d\u062f\u0648\u062f \u0648 \u06a9\u0644\u0627\u0633 \u0631\u0627 \u0633\u0627\u062f\u0647\u200c\u062a\u0631 \u0628\u0631\u0627\u06cc Instantiate \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u062a\u0631\u062c\u06cc\u062d: \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0645\u062d\u062f\u0648\u062f \u0628\u0647 \u0645\u062a\u062f\npublic static &lt;T extends Comparable&lt;T&gt;&gt; T findMax(List&lt;T&gt; list) {\n    return Collections.max(list);\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u0627\u0632 \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc Primitive \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u0622\u0631\u06af\u0648\u0645\u0627\u0646 \u062a\u0627\u06cc\u067e \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u06a9\u0646\u06cc\u062f<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Generic\u0647\u0627\u06cc \u062c\u0627\u0648\u0627 \u0641\u0642\u0637 \u0628\u0627 \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc Reference \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f. \u0628\u0647\u200c\u062c\u0627\u06cc\u0634 \u0627\u0632 \u06a9\u0644\u0627\u0633 Wrapper \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0646\u0645\u06cc\u200c\u0634\u0648\u062f\n\/\/ List&lt;int&gt; numbers = new ArrayList&lt;&gt;();\n\n\/\/ \u062f\u0631\u0633\u062a: autoboxing \u0628\u0647\u200c\u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u06cc\u0646 int \u0648 Integer \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f\nList&lt;Integer&gt; numbers = new ArrayList&lt;&gt;();<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u0627\u0634\u062a\u0628\u0627\u0647\u0627\u062a \u0631\u0627\u06cc\u062c \u0628\u0627 Generic\u0647\u0627<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u062a\u06cc \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0628\u0627\u062a\u062c\u0631\u0628\u0647 \u0647\u0646\u06af\u0627\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Generic\u0647\u0627 \u0627\u0634\u062a\u0628\u0627\u0647 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f. \u0627\u06cc\u0646\u062c\u0627 \u0628\u0631\u062e\u06cc \u062f\u0627\u0645\u0647\u0627\u06cc \u0631\u0627\u06cc\u062c \u0622\u0645\u062f\u0647:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Raw Type<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Raw Type\u0647\u0627 \u0647\u062f\u0641 Generic\u0647\u0627 \u0631\u0627 \u0634\u06a9\u0633\u062a \u0645\u06cc\u200c\u062f\u0647\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>List list = new ArrayList(); \/\/ \u0627\u0632 \u0627\u06cc\u0646 \u0627\u062c\u062a\u0646\u0627\u0628 \u06a9\u0646\u06cc\u062f\nlist.add(\"Hello\");\nlist.add(123); \/\/ \u0628\u062f\u0648\u0646 \u0627\u0645\u0646\u06cc\u062a \u062a\u0627\u06cc\u067e<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0628\u0647\u200c\u062c\u0627\u06cc\u0634 \u0627\u0632 \u062a\u0627\u06cc\u067e \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc\u200c\u0634\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>List&lt;String&gt; list = new ArrayList&lt;&gt;();<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u062a\u0631\u06a9\u06cc\u0628 Generic\u0647\u0627 \u0628\u0627 \u06a9\u062f Legacy<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u067e\u0627\u0633 \u062f\u0627\u062f\u0646 Collection \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc\u200c\u0634\u062f\u0647 \u0628\u0647 \u06a9\u062f\u0650 \u0642\u0628\u0644 \u0627\u0632 Generic\u2014which \u0627\u0632 Raw Type \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f\u2014\u0647\u0634\u062f\u0627\u0631\u0647\u0627\u06cc Unchecked \u062a\u0648\u0644\u06cc\u062f \u06a9\u0631\u062f\u0647 \u0648 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 <strong>Heap Pollution<\/strong> \u0645\u0646\u062c\u0631 \u0634\u0648\u062f\u061b \u062c\u0627\u06cc\u06cc \u06a9\u0647 <code>List&lt;String&gt;<\/code> \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0639\u0646\u0635\u0631\u06cc \u063a\u06cc\u0631-String \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u062f. \u062e\u0637\u0627 \u067e\u0646\u0647\u0627\u0646 \u0645\u06cc\u200c\u0645\u0627\u0646\u062f \u062a\u0627 \u0648\u0642\u062a\u06cc \u0686\u06cc\u0632\u06cc \u0639\u0646\u0635\u0631 \u0622\u0644\u0648\u062f\u0647 \u0631\u0627 \u0628\u062e\u0648\u0627\u0646\u062f \u0648 Cast\u0650 \u062f\u0631\u062c\u200c\u0634\u062f\u0647\u0654 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0634\u06a9\u0633\u062a \u0628\u062e\u0648\u0631\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public class LegacyDemo {\n\n    public static void main(String&#91;] args) {\n        List&lt;String&gt; strings = new ArrayList&lt;&gt;();\n        addRaw(strings);            \/\/ List&lt;String&gt; \u0631\u0627 \u0628\u0647 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 raw \u06cc\u0639\u0646\u06cc List \u067e\u0627\u0633 \u0645\u06cc\u200c\u062f\u0647\u062f\n        String s = strings.get(0); \/\/ ClassCastException \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627\n    }\n\n    static void addRaw(List list) { \/\/ \u067e\u0627\u0631\u0627\u0645\u062a\u0631 raw: \u0628\u062f\u0648\u0646 \u0628\u0631\u0631\u0633\u06cc \u062a\u0627\u06cc\u067e\n        list.add(42); \/\/ \u0647\u0634\u062f\u0627\u0631 unchecked \u0627\u06cc\u0646\u200c\u062c\u0627: add \u062e\u0627\u0645\u060c \u0628\u0631\u0631\u0633\u06cc \u062a\u0627\u06cc\u067e \u0631\u0627 \u062f\u0648\u0631 \u0645\u06cc\u200c\u0632\u0646\u062f\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0645\u062c\u0628\u0648\u0631\u06cc\u062f API\u0647\u0627\u06cc Raw-Type\u0650 Legacy \u0631\u0627 \u0635\u062f\u0627 \u0628\u0632\u0646\u06cc\u062f\u060c \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u067e\u0634\u062a Wrapper \u062a\u0627\u06cc\u067e\u200c\u0634\u062f\u0647\u0654 \u06a9\u0648\u0686\u06a9\u06cc \u0627\u06cc\u0632\u0648\u0644\u0647 \u06a9\u0631\u062f\u0647 \u0648 <code>@SuppressWarnings(\"unchecked\")<\/code> \u0631\u0627 \u0641\u0642\u0637 \u0628\u0639\u062f \u0627\u0632 \u062a\u0623\u06cc\u06cc\u062f\u2014with \u0628\u0627\u0632\u0631\u0633\u06cc\u2014\u0627\u0639\u0645\u0627\u0644 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0648\u0627\u0642\u0639\u0627\u064b \u0627\u0645\u0646-\u0627\u0632-\u0646\u0638\u0631-\u062a\u0627\u06cc\u067e \u0627\u0633\u062a. \u062f\u0644\u06cc\u0644 \u0631\u0627 \u062f\u0631 \u0645\u062d\u0644 \u0633\u0631\u06a9\u0648\u0628 \u0645\u0633\u062a\u0646\u062f \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0627\u062f\u0631\u0633\u062a \u0627\u0632 Wildcard\u0647\u0627<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Wildcard \u0628\u0627 Bound \u0628\u0627\u0644\u0627\u06cc\u06cc (<code>? extends T<\/code>) \u0631\u0648\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc \u06a9\u0647 \u0644\u0627\u0632\u0645 \u0627\u0633\u062a \u062f\u0631 Collection \u0628\u0646\u0648\u06cc\u0633\u062f\u060c \u0631\u0627\u06cc\u062c\u200c\u062a\u0631\u06cc\u0646 \u0627\u0634\u062a\u0628\u0627\u0647 Wildcard \u0627\u0633\u062a. \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0646\u0648\u0634\u062a\u0646 \u0631\u0627 \u0628\u0644\u0627\u06a9 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u0686\u0648\u0646 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u062f \u0644\u06cc\u0633\u062a \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u06a9\u062f\u0627\u0645 \u0632\u06cc\u0631\u062a\u0627\u06cc\u067e \u0645\u0634\u062e\u0635 \u0631\u0627 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public void addItem(List&lt;? extends Number&gt; list) {\n    \/\/ list.add(10); \/\/ \u062e\u0637\u0627\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644: \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a List&lt;Double&gt; \u0628\u0627\u0634\u062f\u060c \u0646\u0647 List&lt;Integer&gt;\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0648\u0642\u062a\u06cc \u0645\u062a\u062f \u0644\u0627\u0632\u0645 \u0627\u0633\u062a \u0639\u0646\u0635\u0631 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u062f\u060c \u0628\u0647\u200c\u062c\u0627\u06cc\u0634 \u0627\u0632 <code>? super T<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public void addItem(List&lt;? super Integer&gt; list) {\n    list.add(10);\n}<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0628\u06cc\u0634\u200c\u0627\u0632\u062d\u062f \u0627\u0632 Wildcard\u0647\u0627<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Wildcard\u0647\u0627 \u0628\u0647 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u0645\u062a\u062f \u062a\u0639\u0644\u0642 \u062f\u0627\u0631\u0646\u062f\u2014\u0646\u0647 \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u0628\u0627\u0632\u06af\u0634\u062a\u06cc. \u0645\u062a\u062f\u06cc \u06a9\u0647 <code>List&lt;? extends Number&gt;<\/code> \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f\u060c \u0647\u0631 Caller \u0631\u0627 \u0645\u062c\u0628\u0648\u0631 \u0628\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a Wildcard \u0645\u06cc\u200c\u06a9\u0646\u062f\u061b \u06a9\u0647 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0631\u0627 \u0628\u0647 \u0628\u06cc\u0631\u0648\u0646 \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631\u062f\u0647 \u0648 \u0645\u0639\u0645\u0648\u0644\u0627\u064b Cast\u0647\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631\u06cc\u2014\u0646\u0647 \u06a9\u0645\u062a\u0631\u06cc\u2014\u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ \u0627\u062c\u062a\u0646\u0627\u0628: \u062a\u0627\u06cc\u067e \u0628\u0627\u0632\u06af\u0634\u062a\u06cc wildcard\u060c \u0639\u062f\u0645 \u0642\u0637\u0639\u06cc\u062a \u0631\u0627 \u0628\u0647 Caller\u0647\u0627 \u062a\u062d\u0645\u06cc\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f\npublic List&lt;? extends Number&gt; getNumbers() { ... }\n\n\/\/ \u062a\u0631\u062c\u06cc\u062d: \u062a\u0627\u06cc\u067e \u0628\u0627\u0632\u06af\u0634\u062a\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc\u200c\u0634\u062f\u0647\u0654 \u0639\u06cc\u0646\u06cc\npublic List&lt;Integer&gt; getNumbers() { ... }<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u0632 Wildcard\u0647\u0627 \u0628\u0631\u0627\u06cc \u06af\u0633\u062a\u0631 \u062f\u0627\u062f\u0646\u0650 \u0622\u0646\u0686\u0647 \u0645\u062a\u062f \u0645\u06cc\u200c\u067e\u0630\u06cc\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f\u061b \u0627\u0632 \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc\u200c\u0634\u062f\u0647\u0654 \u0639\u06cc\u0646\u06cc \u0628\u0631\u0627\u06cc \u0622\u0646\u0686\u0647 \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f. \u0647\u0645\u200c\u0686\u0646\u06cc\u0646 \u0627\u0632 \u062a\u0648\u062f\u0631\u062a\u0648\u06cc Wildcard\u0647\u0627 \u0639\u0645\u06cc\u0642\u200c\u062a\u0631 \u0627\u0632 \u06cc\u06a9 \u0633\u0637\u062d (<code>List&lt;? extends List&lt;?&gt;&gt;<\/code>) \u0627\u062c\u062a\u0646\u0627\u0628 \u06a9\u0646\u06cc\u062f\u2014\u0645\u06af\u0631 \u0627\u06cc\u0646\u06a9\u0647 \u0637\u0631\u0627\u062d\u06cc \u0648\u0627\u0642\u0639\u0627\u064b \u0644\u0627\u0632\u0645\u0634 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f. Wildcard\u0647\u0627\u06cc \u062a\u0648\u062f\u0631\u062a\u0648 \u0642\u0627\u0646\u0648\u0646\u06cc \u0627\u0645\u0627 \u0628\u0647\u200c\u0646\u062f\u0631\u062a \u0636\u0631\u0648\u0631\u06cc\u200c\u0627\u0646\u062f \u0648 \u0628\u0627\u0631 \u0634\u0646\u0627\u062e\u062a\u06cc\u0650 \u062e\u0648\u0627\u0646\u062f\u0646 \u0627\u0645\u0636\u0627 \u0631\u0627 \u0628\u0647\u200c\u0637\u0648\u0631 \u0642\u0627\u0628\u0644 \u062a\u0648\u062c\u0647\u06cc \u0632\u06cc\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0633\u0648\u0627\u0644\u0627\u062a \u0645\u062a\u062f\u0627\u0648\u0644<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Generic \u062f\u0631 \u062c\u0627\u0648\u0627 \u0686\u06cc\u0633\u062a\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Generic\u0647\u0627 \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u06a9\u0644\u0627\u0633\u060c \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633 \u06cc\u0627 \u0645\u062a\u062f\u06cc \u0628\u0627 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e\u06cc \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0622\u0646 \u0631\u0627 \u062f\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0628\u0627 \u062a\u0627\u06cc\u067e \u0639\u06cc\u0646\u06cc \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0627\u06cc\u0646 \u0627\u0645\u0646\u06cc\u062a \u062a\u0627\u06cc\u067e \u0631\u0627\u2014\u0628\u062f\u0648\u0646 Cast \u0635\u0631\u06cc\u062d\u2014\u0641\u0631\u0627\u0647\u0645 \u06a9\u0631\u062f\u0647 \u0648 ClassCastException \u0632\u0645\u0627\u0646-\u0627\u062c\u0631\u0627 \u0631\u0627 \u062d\u0630\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0686\u0631\u0627 \u0627\u0632 Generic \u062f\u0631 \u062c\u0627\u0648\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Generic\u0647\u0627 \u0627\u0645\u0646\u06cc\u062a \u062a\u0627\u06cc\u067e \u0632\u0645\u0627\u0646-\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 (\u06af\u0631\u0641\u062a\u0646 ClassCastException \u0642\u0628\u0644 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647)\u060c \u062d\u0630\u0641 Cast\u0647\u0627\u06cc \u0635\u0631\u06cc\u062d\u060c \u0627\u0645\u06a9\u0627\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u06a9\u062f \u0628\u06cc\u0646 \u062a\u0627\u06cc\u067e\u0647\u0627 \u0648 \u0633\u0627\u062e\u062a\u0627\u0631\u0647\u0627\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc\u0650 \u062e\u0648\u062f-\u0645\u0633\u062a\u0646\u062f \u0631\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u062b\u0627\u0644\u06cc \u0627\u0632 \u0645\u062a\u062f Generic \u0628\u062f\u0647\u06cc\u062f\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0645\u062a\u062f Generic \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0628\u06af\u06cc\u0631\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public static &lt;T&gt; void printArray(T&#91;] elements) {\n    for (T element : elements) {\n        System.out.println(element);\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0645\u062a\u062f \u0639\u0646\u0627\u0635\u0631 \u0622\u0631\u0627\u06cc\u0647\u200c\u0627\u06cc \u0628\u0627 \u0647\u0631 \u062a\u0627\u06cc\u067e\u06cc \u0631\u0627 \u0686\u0627\u067e \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>List&lt;?&gt; \u062f\u0631 \u062c\u0627\u0648\u0627 \u0686\u0647 \u0645\u0639\u0646\u0627\u06cc\u06cc \u062f\u0627\u0631\u062f\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0639\u0644\u0627\u0645\u062a <code>?<\/code> \u062f\u0631 Generic\u0647\u0627\u06cc \u062c\u0627\u0648\u0627 Wildcard \u0627\u0633\u062a \u0648 \u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u06cc \u062a\u0627\u06cc\u067e\u06cc \u0646\u0627\u0634\u0646\u0627\u062e\u062a\u0647:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>List&lt;?&gt; list = new ArrayList&lt;String&gt;();<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc \u0644\u06cc\u0633\u062a \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0647\u0631 \u062a\u0627\u06cc\u067e\u06cc \u0631\u0627 \u0646\u06af\u0647 \u062f\u0627\u0631\u062f\u060c \u0627\u0645\u0627 \u062a\u0627\u06cc\u067e \u062f\u0642\u06cc\u0642\u0634 \u062f\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0646\u0627\u0634\u0646\u0627\u062e\u062a\u0647 \u0627\u0633\u062a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0627\u0646\u0648\u0627\u0639 Wildcard \u062f\u0631 Generic\u0647\u0627\u06cc \u062c\u0627\u0648\u0627 \u0686\u06cc\u0633\u062a\u0646\u062f\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062f\u0648 \u0641\u0631\u0645 \u0645\u062d\u062f\u0648\u062f\u0634\u062f\u0647 \u0628\u0647\u200c\u0647\u0645\u0631\u0627\u0647 Wildcard \u0646\u0627\u0645\u062d\u062f\u0648\u062f:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>? extends T<\/code>: \u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u06cc \u062a\u0627\u06cc\u067e\u06cc \u0646\u0627\u0634\u0646\u0627\u062e\u062a\u0647 \u06a9\u0647 \u0632\u06cc\u0631\u062a\u0627\u06cc\u067e T \u0627\u0633\u062a:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>public void processElements(List&lt;? extends Number&gt; numbers) {\n    for (Number num : numbers) {\n        System.out.println(num);\n    }\n}<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>? super T<\/code>: \u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u06cc \u062a\u0627\u06cc\u067e\u06cc \u0646\u0627\u0634\u0646\u0627\u062e\u062a\u0647 \u06a9\u0647 Superclass\u0650 T \u0627\u0633\u062a:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>public void addNumbers(List&lt;? super Integer&gt; numbers) {\n    numbers.add(42);\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Wildcard\u0647\u0627 \u0627\u0646\u0639\u0637\u0627\u0641 \u0641\u0631\u0627\u0647\u0645 \u06a9\u0631\u062f\u0647 \u0627\u0645\u0627 \u0627\u0645\u0646\u06cc\u062a \u062a\u0627\u06cc\u067e \u0631\u0627 \u062d\u0641\u0638 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0622\u06cc\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0645 \u062f\u0631 \u062c\u0627\u0648\u0627 \u0622\u0631\u0627\u06cc\u0647\u200c\u0627\u06cc \u0627\u0632 Generic \u0628\u0633\u0627\u0632\u0645\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0646\u0647. \u0633\u0627\u062e\u062a \u0622\u0631\u0627\u06cc\u0647 Generic \u062e\u0637\u0627\u06cc \u0632\u0645\u0627\u0646-\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0627\u0633\u062a: Type Erasure \u062a\u0627\u06cc\u067e \u0639\u0646\u0635\u0631\u06cc \u0631\u0627 \u06a9\u0647 \u0622\u0631\u0627\u06cc\u0647 \u0628\u0627\u06cc\u062f \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0627\u0644\u0632\u0627\u0645\u06cc \u06a9\u0646\u062f \u062d\u0630\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0628\u0647\u200c\u062c\u0627\u06cc\u0634 \u0627\u0632 <code>List&lt;T&gt;<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>List&lt;String&gt; list = new ArrayList&lt;&gt;();<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0686\u0631\u0627 Generic\u0647\u0627 \u062f\u0631 \u062c\u0627\u0648\u0627 \u0627\u0645\u0646\u200c\u0627\u0646\u062f\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Generic\u0647\u0627 \u0628\u0631\u0631\u0633\u06cc \u062a\u0627\u06cc\u067e \u0631\u0627 \u0627\u0632 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0628\u0647 \u0632\u0645\u0627\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0645\u0646\u062a\u0642\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f. \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u0627\u0644\u0632\u0627\u0645\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f \u0641\u0642\u0637 \u0645\u0642\u0627\u062f\u06cc\u0631\u0650 \u062a\u0627\u06cc\u067e \u062a\u0639\u0631\u06cc\u0641\u200c\u0634\u062f\u0647 \u0628\u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0633\u0627\u062e\u062a\u0627\u0631 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc\u200c\u0634\u062f\u0647 \u0627\u0636\u0627\u0641\u0647 \u06cc\u0627 \u0627\u0632 \u0622\u0646 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0634\u0648\u0646\u062f\u061b \u06a9\u0647 \u062f\u0633\u062a\u0647 ClassCastException\u0647\u0627\u06cc\u06cc \u06a9\u0647 Raw Type\u0647\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u0631\u0627 \u062d\u0630\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u0642\u0648\u0627\u0646\u06cc\u0646 Generic \u062f\u0631 \u062c\u0627\u0648\u0627 \u0686\u06cc\u0633\u062a\u0646\u062f\u061f<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646 Instance\u0647\u0627\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0631\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645 \u0633\u0627\u062e\u062a:<\/strong><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>class Container&lt;T&gt; {\n    \/\/ T obj = new T(); \/\/ \u063a\u06cc\u0631\u0642\u0627\u0646\u0648\u0646\u06cc: \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0642\u0627\u0628\u0644 instantiation \u0646\u06cc\u0633\u062a\n}<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0641\u06cc\u0644\u062f Static \u0627\u0632 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e Generic \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f:<\/strong><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>class Holder&lt;T&gt; {\n    \/\/ static T instance; \/\/ \u063a\u06cc\u0631\u0642\u0627\u0646\u0648\u0646\u06cc: \u0628\u06cc\u0646 \u0647\u0645\u0647 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc\u200c\u0633\u0627\u0632\u06cc\u200c\u0647\u0627 \u0645\u0634\u062a\u0631\u06a9 \u0627\u0633\u062a\n}<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0627\u0632 Primitive\u0647\u0627 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f (\u0628\u0647\u200c\u062c\u0627\u06cc\u0634 \u0627\u0632 \u06a9\u0644\u0627\u0633 Wrapper):<\/strong><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ List&lt;int&gt; list = new ArrayList&lt;&gt;(); \/\/ \u063a\u06cc\u0631\u0642\u0627\u0646\u0648\u0646\u06cc\nList&lt;Integer&gt; list = new ArrayList&lt;&gt;();<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u06a9\u0644\u0627\u0633 Generic \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f Throwable \u0631\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645 \u06cc\u0627 \u063a\u06cc\u0631\u0645\u0633\u062a\u0642\u06cc\u0645 Extend \u06a9\u0646\u062f:<\/strong><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ class MyException&lt;T&gt; extends Exception { } \/\/ \u063a\u06cc\u0631\u0642\u0627\u0646\u0648\u0646\u06cc<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u06cc\u0639\u0646\u06cc Exception\u0647\u0627\u06cc Checked \u0648 Unchecked\u0650 Generic \u0645\u062c\u0627\u0632 \u0646\u06cc\u0633\u062a\u0646\u062f. \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u062f\u0631 \u0628\u0646\u062f throws \u0645\u062a\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f\u060c \u0627\u0645\u0627 \u062e\u0648\u062f \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0644\u0627\u0633 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0631\u0648\u06cc Throwable \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc \u0634\u0648\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Generic\u0647\u0627 \u06a9\u0650\u06cc \u0628\u0647 \u062c\u0627\u0648\u0627 \u0645\u0639\u0631\u0641\u06cc \u0634\u062f\u0646\u062f\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062c\u0627\u0648\u0627 \u06f5 (JSR 14\u060c \u0633\u067e\u062a\u0627\u0645\u0628\u0631 \u06f2\u06f0\u06f0\u06f4). \u0641\u0631\u06cc\u0645\u200c\u0648\u0631\u06a9 Java Collections \u0647\u0645\u200c\u0632\u0645\u0627\u0646 \u0628\u0627\u0632\u0646\u0648\u06cc\u0633\u06cc \u0634\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062a\u0641\u0627\u0648\u062a ? extends T \u0648 ? super T \u0686\u06cc\u0633\u062a\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>? extends T<\/code> \u0644\u06cc\u0633\u062a\u06cc \u0627\u0632 T \u06cc\u0627 \u0647\u0631 \u0632\u06cc\u0631\u062a\u0627\u06cc\u067e\u0634 \u0631\u0627 \u0645\u06cc\u200c\u067e\u0630\u06cc\u0631\u062f\u061b \u0648\u0642\u062a\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647\u200c\u0627\u0634 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0645\u062a\u062f \u0641\u0642\u0637 \u0645\u06cc\u200c\u062e\u0648\u0627\u0646\u062f (Producer). <code>? super T<\/code> \u0644\u06cc\u0633\u062a\u06cc \u0627\u0632 T \u06cc\u0627 \u0647\u0631 Supertype\u0627\u0634 \u0631\u0627 \u0645\u06cc\u200c\u067e\u0630\u06cc\u0631\u062f\u061b \u0648\u0642\u062a\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647\u200c\u0627\u0634 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0645\u062a\u062f \u0641\u0642\u0637 \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u062f (Consumer). \u064a\u0627\u062f\u0622\u0648\u0631\u06cc: <strong>PECS<\/strong> \u06cc\u0639\u0646\u06cc Producer Extends, Consumer Super.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u062a\u0641\u0627\u0648\u062a \u0645\u062a\u062f Generic \u0648 \u06a9\u0644\u0627\u0633 Generic \u0686\u06cc\u0633\u062a\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u06a9\u0644\u0627\u0633 Generic\u060c \u062a\u0627\u06cc\u067e\u06cc \u0631\u0627 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0633\u0627\u062e\u062a \u0628\u0631\u0627\u06cc \u0647\u0645\u0647 \u0645\u062a\u062f\u0647\u0627 \u0648 \u0641\u06cc\u0644\u062f\u0647\u0627\u06cc\u0634 \u062b\u0627\u0628\u062a \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0645\u062a\u062f Generic\u060c \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062a\u0627\u06cc\u067e \u062e\u0648\u062f\u0634 \u0631\u0627\u2014\u0645\u062d\u062f\u0648\u062f \u0628\u0647 \u0647\u0645\u0627\u0646 \u0645\u062a\u062f\u060c \u0645\u0633\u062a\u0642\u0644 \u0627\u0632 \u06a9\u0644\u0627\u0633 \u0627\u062d\u0627\u0637\u0647\u200c\u06a9\u0646\u0646\u062f\u0647\u2014\u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0648\u0642\u062a\u06cc \u0641\u0642\u0637 \u06cc\u06a9 \u0639\u0645\u0644\u06cc\u0627\u062a \u0644\u0627\u0632\u0645 \u062f\u0627\u0631\u062f \u062a\u0627\u06cc\u067e-\u0645\u062a\u062c\u0627\u0647\u0644 \u0628\u0627\u0634\u062f\u060c \u0627\u0632 \u0645\u062a\u062f Generic \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Generic\u0647\u0627\u06cc \u062c\u0627\u0648\u0627 \u062f\u0631 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0628\u0627 C# \u0686\u06af\u0648\u0646\u0647\u200c\u0627\u0646\u062f\u061f<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">C# \u0627\u0632 Generic\u0647\u0627\u06cc <strong>Reified<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f: \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0645\u0648\u062c\u0648\u062f\u0646\u062f\u2014which \u0627\u0645\u06a9\u0627\u0646 <code>new T()<\/code> \u0648 Reflection \u06cc\u0639\u0646\u06cc <code>typeof(T)<\/code> \u0632\u0645\u0627\u0646-\u0627\u062c\u0631\u0627 \u0631\u0627 \u0645\u06cc\u200c\u062f\u0647\u062f. \u062c\u0627\u0648\u0627 \u0627\u0632 <strong>Type Erasure<\/strong> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f: \u0622\u0631\u06af\u0648\u0645\u0627\u0646\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u062f\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u062d\u0630\u0641 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u061b \u067e\u0633 <code>new T()<\/code> \u0648 <code>instanceof List&lt;String&gt;<\/code> \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0646\u0645\u06cc\u200c\u0634\u0648\u0646\u062f. \u062c\u0627\u0648\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062a\u0627\u06cc\u067e \u0632\u0645\u0627\u0646-\u0627\u062c\u0631\u0627 \u0631\u0627 \u0628\u0627 \u0633\u0627\u0632\u06af\u0627\u0631\u06cc \u0639\u0642\u0628\u06cc \u0628\u0627 Bytecode \u0642\u0628\u0644 \u0627\u0632 \u062c\u0627\u0648\u0627 \u06f5 \u0645\u0639\u0627\u0645\u0644\u0647 \u06a9\u0631\u062f.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u0646\u062a\u06cc\u062c\u0647\u200c\u06af\u06cc\u0631\u06cc<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0627\u06cc\u0646 \u0622\u0645\u0648\u0632\u0634 Generic\u0647\u0627\u06cc \u062c\u0627\u0648\u0627 \u0631\u0627 \u0627\u0632 \u0627\u0635\u0648\u0644 \u0627\u0648\u0644\u06cc\u0647 \u062a\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u067e\u06cc\u0634\u0631\u0641\u062a\u0647 \u067e\u0648\u0634\u0634 \u062f\u0627\u062f. \u06a9\u0627\u0648\u0634 \u06a9\u0631\u062f\u06cc\u062f \u06a9\u0647 \u06a9\u0644\u0627\u0633\u0647\u0627\u060c \u0645\u062a\u062f\u0647\u0627 \u0648 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633\u0647\u0627\u06cc Generic \u0686\u06af\u0648\u0646\u0647 \u062a\u0639\u0631\u06cc\u0641 \u0648 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u06cc \u0645\u06cc\u200c\u0634\u0648\u0646\u062f\u061b \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u0645\u062d\u062f\u0648\u062f\u0634\u062f\u0647 \u0686\u06af\u0648\u0646\u0647 \u0628\u0627 extends \u0648 super \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u0642\u0627\u0628\u0644 \u0642\u0628\u0648\u0644 \u0631\u0627 \u0645\u062d\u062f\u0648\u062f \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u061b Wildcard\u0647\u0627 \u0648 \u0642\u0627\u0639\u062f\u0647 PECS \u0686\u06af\u0648\u0646\u0647 \u0637\u0631\u0627\u062d\u06cc API \u0631\u0627 \u0647\u062f\u0627\u06cc\u062a \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u061b \u0648 Type Erasure \u0686\u06af\u0648\u0646\u0647 \u062f\u0631 \u0633\u0637\u062d Bytecode\u2014from \u062c\u0645\u0644\u0647 \u0646\u0642\u0634 \u0645\u062a\u062f\u0647\u0627\u06cc Bridge\u2014\u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f. \u0647\u0645\u200c\u0686\u0646\u06cc\u0646 \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc Generic \u0631\u0627 \u0628\u0627 Raw Type\u0647\u0627 \u0645\u0642\u0627\u06cc\u0633\u0647 \u06a9\u0631\u062f\u0647 \u0648 \u0631\u0648\u0634\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u06a9\u062f Generic \u0631\u0627 \u0627\u0645\u0646 \u0648 \u062e\u0648\u0627\u0646\u0627 \u0646\u06af\u0647 \u0645\u06cc\u200c\u062f\u0627\u0631\u0646\u062f \u0631\u0627 \u0645\u0631\u0648\u0631 \u06a9\u0631\u062f\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u062d\u0627\u0644\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u06a9\u0644\u0627\u0633\u0647\u0627 \u0648 \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633\u0647\u0627\u06cc Generic \u0628\u0627 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u0645\u0646\u0641\u0631\u062f \u0648 \u0645\u062a\u0639\u062f\u062f \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f\u060c \u0645\u062a\u062f\u0647\u0627\u06cc Generic \u0628\u0627 \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u0627\u0633\u062a\u0646\u0628\u0627\u0637\u200c\u0634\u062f\u0647 \u062a\u0648\u0633\u0637 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f\u060c Bound\u0647\u0627\u06cc \u0628\u0627\u0644\u0627\u06cc\u06cc \u0648 \u067e\u0627\u06cc\u06cc\u0646\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u062a\u0627\u06cc\u067e\u0647\u0627\u06cc \u067e\u0630\u06cc\u0631\u0641\u062a\u0647\u200c\u0634\u062f\u0647 \u0627\u0639\u0645\u0627\u0644 \u06a9\u0646\u06cc\u062f\u060c \u0628\u06cc\u0646 Wildcard\u0647\u0627 \u0648 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u062a\u0627\u06cc\u067e \u0635\u0631\u06cc\u062d \u062f\u0631 \u0645\u062a\u062f\u0647\u0627\u06cc API \u0639\u0645\u0648\u0645\u06cc \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f\u061b \u0648 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a\u0647\u0627\u06cc \u0639\u0645\u0644\u06cc \u062a\u062d\u0645\u06cc\u0644\u200c\u0634\u062f\u0647 \u062a\u0648\u0633\u0637 Type Erasure \u0631\u0627 \u0628\u0634\u0646\u0627\u0633\u06cc\u062f.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0645\u0642\u062f\u0645\u0647 Generic\u0647\u0627\u06cc \u062c\u0627\u0648\u0627 \u0628\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u06a9\u0644\u0627\u0633\u200c\u0647\u0627\u060c \u0627\u06cc\u0646\u062a\u0631\u0641\u06cc\u0633\u200c\u0647\u0627 \u0648 \u0645\u062a\u062f\u0647\u0627\u06cc\u06cc \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f \u06a9\u0647 \u0631\u0648\u06cc \u062a\u0627\u06cc\u067e\u06cc \u0645\u0634\u062e\u0635\u200c\u0634\u062f\u0647 \u062f\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0639\u0645\u0644 \u06a9\u0646\u0646\u062f\u2014\u0646\u0647 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627. Generic\u0647\u0627 \u06a9\u0647 \u062f\u0631 \u062c\u0627\u0648\u0627 \u06f5 (JSR 14\u060c \u0633\u067e\u062a\u0627\u0645\u0628\u0631 \u06f2\u06f0\u06f0\u06f4) \u0645\u0639\u0631\u0641\u06cc \u0634\u062f\u0646\u062f\u060c \u0628\u0631\u0631\u0633\u06cc \u062a\u0627\u06cc\u067e \u0632\u0645\u0627\u0646-\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0647 \u0648 Cast\u0647\u0627\u06cc \u0635\u0631\u06cc\u062d \u0648 \u0631\u06cc\u0633\u06a9 ClassCastException\u2014which \u062f\u0631 \u06a9\u062f Collection \u0642\u0628\u0644 \u0627\u0632 \u062c\u0627\u0648\u0627 \u06f5 \u0631\u0627\u06cc\u062c &hellip;<\/p>\n","protected":false},"author":9,"featured_media":7075,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[190],"tags":[],"class_list":["post-7074","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programming"],"_links":{"self":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/7074","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/comments?post=7074"}],"version-history":[{"count":1,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/7074\/revisions"}],"predecessor-version":[{"id":7076,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/7074\/revisions\/7076"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media\/7075"}],"wp:attachment":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media?parent=7074"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/categories?post=7074"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/tags?post=7074"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}