CodeGym/Java Blog/рдпрд╛рджреГрдЪреНрдЫрд┐рдХ/рдЬрд╛рд╡рд╛ рдЬреЗрдиреЗрд░рд┐рдХреНрд╕: рд╕рд░рд╛рд╡ рдордзреНрдпреЗ рдХреЛрди рдХрдВрд╕ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рд╡реЗ
John Squirrels
рдкрд╛рддрд│реА 41
San Francisco

рдЬрд╛рд╡рд╛ рдЬреЗрдиреЗрд░рд┐рдХреНрд╕: рд╕рд░рд╛рд╡ рдордзреНрдпреЗ рдХреЛрди рдХрдВрд╕ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рд╡реЗ

рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдпрд╛ рдЧреНрд░реБрдкрдордзреНрдпреЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреЗрд▓реЗ
рд╕рджрд╕реНрдп

рдкрд░рд┐рдЪрдп

JSE 5.0 рд╕рд╣ рдкреНрд░рд╛рд░рдВрдн рдХрд░реВрди, Java рднрд╛рд╖реЗрдЪреНрдпрд╛ рд╢рд╕реНрддреНрд░рд╛рдЧрд╛рд░рд╛рдд рдЬреЗрдиреЗрд░рд┐рдХ рдЬреЛрдбрд▓реЗ рдЧреЗрд▓реЗ.

рдЬрд╛рд╡рд╛ рдордзреНрдпреЗ рдЬреЗрдиреЗрд░рд┐рдХ рдХрд╛рдп рдЖрд╣реЗрдд?

рдЬреЗрдиреЗрд░рд┐рдХ рд╣реА рдЬреЗрдиреЗрд░рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧрдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА Java рдЪреА рдЦрд╛рд╕ рдпрдВрддреНрд░рдгрд╛ рдЖрд╣реЗ тАФ рдбреЗрдЯрд╛ рдЖрдгрд┐ рдЕрд▓реНрдЧреЛрд░рд┐рджрдордЪреЗ рд╡рд░реНрдгрди рдХрд░рдгреНрдпрд╛рдЪрд╛ рдПрдХ рдорд╛рд░реНрдЧ рдЬреЛ рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрд▓реНрдЧреЛрд░рд┐рджрдордЪреЗ рд╡рд░реНрдгрди рди рдмрджрд▓рддрд╛ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдбреЗрдЯрд╛рдЯрд╛рдЗрдкрд╕рд╣ рдХрд╛рд░реНрдп рдХрд░реВ рджреЗрддреЛ. рдУрд░реЕрдХрд▓ рд╡реЗрдмрд╕рд╛рдЗрдЯрд╡рд░ рдЬреЗрдиреЗрд░рд┐рдХрд╕рд╛рдареА рд╕рдорд░реНрдкрд┐рдд рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдЖрд╣реЗ: " рдзрдбрд╛ ". рдЬреЗрдиреЗрд░рд┐рдХреНрд╕ рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдкреНрд░рдердо рддреНрдпрд╛рдВрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рдЖрд╣реЗ рдЖрдгрд┐ рддреЗ рдХрд╛рдп рджреЗрддрд╛рдд рд╣реЗ рд╢реЛрдзрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рдЪрд╛ " рдЬреЗрдиреЗрд░рд┐рдХреНрд╕ рдХрд╛ рд╡рд╛рдкрд░рд╛? " рд╡рд┐рднрд╛рдЧ рдореНрд╣рдгрддреЛ рдХреА рд╕рдВрдХрд▓рд┐рдд рд╡реЗрд│реА рдЕрдзрд┐рдХ рдордЬрдмреВрдд рдкреНрд░рдХрд╛рд░ рддрдкрд╛рд╕рдгреЗ рдЖрдгрд┐ рд╕реНрдкрд╖реНрдЯ рдЬрд╛рддреАрдВрдЪреА рдЧрд░рдЬ рджреВрд░ рдХрд░рдгреЗ рд╣реЗ рджреЛрди рдЙрджреНрджреЗрд╢ рдЖрд╣реЗрдд. рдЬрд╛рд╡рд╛рдордзреАрд▓ рдЬреЗрдиреЗрд░рд┐рдХреНрд╕: рд╕рд░рд╛рд╡ рдордзреНрдпреЗ рдХреЛрди рдХрдВрд╕ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рдпрдЪреЗ - 1рдЪрд▓рд╛ рдЖрдордЪреНрдпрд╛ рдкреНрд░рд┐рдп рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдкреЙрдЗрдВрдЯ рдСрдирд▓рд╛рдЗрди рдЬрд╛рд╡рд╛ рдХрдВрдкрд╛рдЗрд▓рд░рдордзреАрд▓ рдХрд╛рд╣реА рдЪрд╛рдЪрдгреНрдпрд╛рдВрдЪреА рддрдпрд╛рд░реА рдХрд░реВрдпрд╛. рд╕рдордЬрд╛ рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдЦрд╛рд▓реАрд▓ рдХреЛрдб рдЖрд╣реЗ:
import java.util.*;
public class HelloWorld {
	public static void main(String []args) {
		List list = new ArrayList();
		list.add("Hello");
		String text = list.get(0) + ", world!";
		System.out.print(text);
	}
}
рд╣рд╛ рдХреЛрдб рдЙрддреНрддрдо рдкреНрд░рдХрд╛рд░реЗ рдЪрд╛рд▓реЗрд▓. рдкрдг рдЬрд░ рдмреЙрд╕ рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдЖрд▓рд╛ рдЖрдгрд┐ рдореНрд╣рдгрд╛рд▓рд╛ рдХреА "рдирдорд╕реНрдХрд╛рд░, рдЬрдЧ!" рдПрдХ рдЕрддрд┐рд╡рд╛рдкрд░ рдХреЗрд▓реЗрд▓рд╛ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдЖрд╣реЗ рдЖрдгрд┐ рдЖрдкрдг рдлрдХреНрдд "рд╣реЕрд▓реЛ" рдкрд░рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ? рдЖрдореНрд╣реА рдХреЛрдб рдХрд╛рдвреВрди рдЯрд╛рдХреВ рдЬреЛ ", рдЬрдЧ!" рд╣реЗ рдкреБрд░реЗрд╕реЗ рдирд┐рд░реБрдкрджреНрд░рд╡реА рджрд┐рд╕рддреЗ, рдмрд░реЛрдмрд░? рдкрд░рдВрддреБ рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд рд╕рдВрдХрд▓рд┐рдд рд╡реЗрд│реА рдЖрдореНрд╣рд╛рд▓рд╛ рдПрдХ рддреНрд░реБрдЯреА рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ:
error: incompatible types: Object cannot be converted to String
рд╕рдорд╕реНрдпрд╛ рдЕрд╢реА рдЖрд╣реЗ рдХреА рдЖрдордЪреНрдпрд╛ рд╕реВрдЪреАрдордзреНрдпреЗ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд. рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реЗ рдСрдмреНрдЬреЗрдХреНрдЯрдЪреЗ рд╡рдВрд╢рдЬ рдЖрд╣реЗ (рд╕рд░реНрд╡ Java рдХреНрд▓рд╛рд╕реЗрд╕рд▓рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░реЗ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рд╡рд╛рд░рд╕рд╛ рдорд┐рд│рдд рдЕрд╕рд▓реНрдпрд╛рдиреЗ ), рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЖрдореНрд╣рд╛рд▓рд╛ рд╕реНрдкрд╖реНрдЯ рдХрд╛рд╕реНрдЯ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдЖрдореНрд╣реА рдПрдХ рдЬреЛрдбрд▓реЗ рдирд╛рд╣реА. рдХреЙрдиреНрдХрдЯреЗрдиреЗрд╢рди рдСрдкрд░реЗрд╢рди рджрд░рдореНрдпрд╛рди, рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд╛рдкрд░реВрди рд╕реНрдЯреЕрдЯрд┐рдХ String.valueOf(obj) рдкрджреНрдзрдд рдХреЙрд▓ рдХреЗрд▓реА рдЬрд╛рдИрд▓. рдЕрдЦреЗрд░реАрд╕, рддреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрд▓рд╛рд╕рдЪреНрдпрд╛ toString рдкрджреНрдзрддреАрд▓рд╛ рдХреЙрд▓ рдХрд░реЗрд▓ . рджреБрд╕рд▒реНрдпрд╛ рд╢рдмреНрджрд╛рдВрдд, рдЖрдордЪреНрдпрд╛ рд╕реВрдЪреАрдордзреНрдпреЗ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрд╣реЗ . рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЕрд╕рд╛ рдХреА рдЬрд┐рдереЗ рдЖрдореНрд╣рд╛рд▓рд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ ( рдСрдмреНрдЬреЗрдХреНрдЯ рдирд╛рд╣реА ), рдЖрдореНрд╣рд╛рд▓рд╛ рдЯрд╛рдЗрдк рд░реВрдкрд╛рдВрддрд░рдг рд╕реНрд╡рддрдГ рдХрд░рд╛рд╡реЗ рд▓рд╛рдЧреЗрд▓:
import java.util.*;
public class HelloWorld {
	public static void main(String []args) {
		List list = new ArrayList();
		list.add("Hello!");
		list.add(123);
		for (Object str : list) {
		    System.out.println("-" + (String)str);
		}
	}
}
рддрдерд╛рдкрд┐, рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдХрд╛рд░рдг рд╕реВрдЪреА рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдШреЗрддреЗ, рддреА рдХреЗрд╡рд│ String s рдирд╛рд╣реА рддрд░ Integer s рджреЗрдЦреАрд▓ рд╕рдВрдЪрдпрд┐рдд рдХрд░реВ рд╢рдХрддреЗ. рдкрдг рд╕рд░реНрд╡рд╛рдд рд╡рд╛рдИрдЯ рдЧреЛрд╖реНрдЯ рдЕрд╢реА рдЖрд╣реЗ рдХреА рдХрдВрдкрд╛рдЗрд▓рд░рд▓рд╛ рдпреЗрдереЗ рдХрд╛рд╣реАрд╣реА рдЪреБрдХреАрдЪреЗ рджрд┐рд╕рдд рдирд╛рд╣реА. рдЖрдгрд┐ рдЖрддрд╛ рдЖрдореНрд╣рд╛рд▓рд╛ RUN TIME рдордзреНрдпреЗ рдПрдХ рддреНрд░реБрдЯреА рдорд┐рд│реЗрд▓ ("рд░рдирдЯрд╛рдЗрдо рддреНрд░реБрдЯреА" рдореНрд╣рдгреВрди рдУрд│рдЦрд▓реА рдЬрд╛рддреЗ). рддреНрд░реБрдЯреА рдЕрд╕реЗрд▓:
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
рд╣реЗ рдлрд╛рд░ рдЪрд╛рдВрдЧрд▓реЗ рдирд╛рд╣реА рд╣реЗ рддреБрдореНрд╣реА рдорд╛рдиреНрдп рдХреЗрд▓реЗрдЪ рдкрд╛рд╣рд┐рдЬреЗ. рдЖрдгрд┐ рд╣реЗ рд╕рд░реНрд╡ рдХрд╛рд░рдг рдХрдВрдкрд╛рдЗрд▓рд░ рд╣реА рдХреГрддреНрд░рд┐рдо рдмреБрджреНрдзрд┐рдорддреНрддрд╛ рдирд╛рд╣реА рдЬреА рдиреЗрд╣рдореА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░рдЪреНрдпрд╛ рд╣реЗрддреВрдЪрд╛ рдЕрдЪреВрдХ рдЕрдВрджрд╛рдЬ рд▓рд╛рд╡реВ рд╢рдХрддреЗ. Java SE 5 рдиреЗ рдЬреЗрдиреЗрд░рд┐рдХреНрд╕ рд╕рд╛рджрд░ рдХреЗрд▓реЗ рдЖрд╣реЗ рдЬреЗрдгреЗрдХрд░реБрди рдЖрдореНрд╣рд╛рд▓рд╛ рдХрдВрдкрд╛рдЗрд▓рд░рд▓рд╛ рдЖрдордЪреЗ рд╣реЗрддреВ рд╕рд╛рдВрдЧреВ рджреНрдпрд╛ - рдЖрдореНрд╣реА рдХреЛрдгрддреЗ рдкреНрд░рдХрд╛рд░ рд╡рд╛рдкрд░рдгрд╛рд░ рдЖрд╣реЛрдд. рдЖрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рд╣рд╡реЗ рдЖрд╣реЗ рддреЗ рдХрдВрдкрд╛рдЗрд▓рд░рд▓рд╛ рд╕рд╛рдВрдЧреВрди рдЖрдореНрд╣реА рдЖрдордЪрд╛ рдХреЛрдб рдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЛ:
import java.util.*;
public class HelloWorld {
	public static void main(String []args) {
		List<String> list = new ArrayList<>();
		list.add("Hello!");
		list.add(123);
		for (Object str : list) {
		    System.out.println("-" + str);
		}
	}
}
рддреБрдореНрд╣реА рдмрдШреВ рд╢рдХрддрд╛, рдЖрдореНрд╣рд╛рд▓рд╛ рдпрд╛рдкреБрдвреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧрд╕рд╛рдареА рдХрд╛рд╕реНрдЯрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА . рдпрд╛ рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдЯрд╛рдЗрдк рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯрднреЛрд╡рддреА рдХреЛрди рдХрдВрд╕ рдЖрд╣реЗрдд. рдЖрддрд╛ рдХрдВрдкрд╛рдЗрд▓рд░ рдЖрдореНрд╣рд╛рд▓рд╛ рд╡рд░реНрдЧ рд╕рдВрдХрд▓рд┐рдд рдХрд░реВ рджреЗрдгрд╛рд░ рдирд╛рд╣реА рдЬреЛрдкрд░реНрдпрдВрдд рдЖрдореНрд╣реА рд╕реВрдЪреАрдордзреНрдпреЗ 123 рдЬреЛрдбрдгрд╛рд░реА рдУрд│ рдХрд╛рдвреВрди рдЯрд╛рдХрдд рдирд╛рд╣реА, рдХрд╛рд░рдг рд╣рд╛ рдкреВрд░реНрдгрд╛рдВрдХ рдЖрд╣реЗ . рдЖрдгрд┐ рддреЗ рдЖрдореНрд╣рд╛рд▓рд╛ рд╕рд╛рдВрдЧреЗрд▓. рдмрд░реЗрдЪ рд▓реЛрдХ рдЬреЗрдиреЗрд░рд┐рдХрд▓рд╛ "рд╕рд┐рдВрдЯреЕрдХреНрдЯрд┐рдХ рд╢реБрдЧрд░" рдореНрд╣рдгрддрд╛рдд. рдЖрдгрд┐ рддреЗ рдмрд░реЛрдмрд░ рдЖрд╣реЗрдд, рдХрд╛рд░рдг рдЬреЗрдиреЗрд░рд┐рдХреНрд╕ рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рддреЗ рдЦрд░реЛрдЦрд░ рд╕рдорд╛рди рдкреНрд░рдХрд╛рд░рдЪреА рд░реВрдкрд╛рдВрддрд░рдгреЗ рдмрдирддрд╛рдд. рдЪрд▓рд╛ рд╕рдВрдХрд▓рд┐рдд рд╡рд░реНрдЧрд╛рдВрдЪреЗ рдмрд╛рдпрдХреЛрдб рдкрд╛рд╣реВ: рдПрдХ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рдХрд╛рд╕реНрдЯ рд╡рд╛рдкрд░рддреЛ рдЖрдгрд┐ рдПрдХ рдЬреЗ рдЬреЗрдиреЗрд░рд┐рдХ рд╡рд╛рдкрд░рддреЛ: рдЬрд╛рд╡рд╛рдордзреАрд▓ рдЬреЗрдиреЗрд░рд┐рдХреНрд╕: рд╕рд░рд╛рд╡ рдордзреНрдпреЗ рдХреЛрди рдХрдВрд╕ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рдпрдЪреЗ - 2рд╕рдВрдХрд▓рди рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, рд╕рд░реНрд╡ рдЬреЗрдиреЗрд░рд┐рдХ рдорд┐рдЯрд╡рд▓реЗ рдЬрд╛рддрд╛рдд. рдпрд╛рд▓рд╛ " рдЯрд╛рдИрдк рдЗрд░реЗрдЬрд░ " рдореНрд╣рдгрддрд╛рдд". рдЯрд╛рдЗрдк рдЗрд░реЗрдЬрд░ рдЖрдгрд┐ рдЬреЗрдиреЗрд░рд┐рдХреНрд╕ рд╣реЗ JDK рдЪреНрдпрд╛ рдЬреБрдиреНрдпрд╛ рдЖрд╡реГрддреНрддреНрдпрд╛рдВрд╢реА рдмреЕрдХрд╡рд░реНрдб рд╕реБрд╕рдВрдЧрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗрд▓реЗ рдЖрд╣реЗрдд рдЖрдгрд┐ рддреНрдпрд╛рдЪ рд╡реЗрд│реА рдХрдВрдкрд╛рдЗрд▓рд░рд▓рд╛ Java рдЪреНрдпрд╛ рдирд╡реАрди рдЖрд╡реГрддреНрддреНрдпрд╛рдВрдордзреНрдпреЗ рдЯрд╛рдЗрдк рдкрд░рд┐рднрд╛рд╖рд╛рдВрдордзреНрдпреЗ рдорджрдд рдХрд░рдгреНрдпрд╛рд╕ рдкрд░рд╡рд╛рдирдЧреА рджреЗрддрд╛рдд.

рдХрдЪреНрдЪрд╛ рдкреНрд░рдХрд╛рд░

рдЬреЗрдиреЗрд░рд┐рдХрдмрджреНрджрд▓ рдмреЛрд▓рддрд╛рдирд╛, рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдиреЗрд╣рдореА рджреЛрди рд╢реНрд░реЗрдгреА рдЕрд╕рддрд╛рдд: рдкреЕрд░рд╛рдореАрдЯрд░рд╛рдЗрдЬреНрдб рдкреНрд░рдХрд╛рд░ рдЖрдгрд┐ рдХрдЪреНрдЪреЗ рдкреНрд░рдХрд╛рд░. рдХрдЪреНрдЪреЗ рдкреНрд░рдХрд╛рд░ рд╣реЗ рдХреЛрди рдХрдВрд╕рд╛рдд "рдкреНрд░рдХрд╛рд░ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг" рд╡рдЧрд│рдгрд╛рд░реЗ рдкреНрд░рдХрд╛рд░ рдЖрд╣реЗрдд: рдЬрд╛рд╡рд╛рдордзреАрд▓ рдЬреЗрдиреЗрд░рд┐рдХреНрд╕: рд╕рд░рд╛рд╡ рдордзреНрдпреЗ рдХреЛрди рдХрдВрд╕ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рдпрдЪреЗ - 3рдкреЕрд░рд╛рдореАрдЯрд░рд╛рдЗрдЬреНрдб рдкреНрд░рдХрд╛рд░рд╛рдВрдордзреНрдпреЗ, рдПрдХ "рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг" рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ: рдЬрд╛рд╡рд╛ рдордзреАрд▓ рдЬреЗрдиреЗрд░рд┐рдХреНрд╕: рд╕рд░рд╛рд╡ рдордзреНрдпреЗ рдХреЛрди рдХрдВрд╕ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рдпрдЪреЗ - 4рдЬрд╕реЗ рдЖрдкрдг рдкрд╛рд╣реВ рд╢рдХрддрд╛, рдЖрдореНрд╣реА рд╕реНрдХреНрд░реАрдирд╢реЙрдЯрдордзреНрдпреЗ рдмрд╛рдгрд╛рдиреЗ рдЪрд┐рдиреНрд╣рд╛рдВрдХрд┐рдд рдХреЗрд▓реЗрд▓реЗ рдЕрд╕рд╛рдорд╛рдиреНрдп рдмрд╛рдВрдзрдХрд╛рдо рд╡рд╛рдкрд░рд▓реЗ рдЖрд╣реЗ. рд╣рд╛ рд╡рд┐рд╢реЗрд╖ рд╡рд╛рдХреНрдпрд░рдЪрдирд╛ рдЖрд╣реЗ рдЬреЛ Java SE 7 рдордзреНрдпреЗ рдЬреЛрдбрд▓рд╛ рдЧреЗрд▓рд╛ рд╣реЛрддрд╛. рддреНрдпрд╛рд▓рд╛ " рдбрд╛рдпрдордВрдб " рдореНрд╣рдгрддрд╛рдд . рдХрд╛? рдХреЛрди рдХрдВрд╕ рдбрд╛рдпрдордВрдб рдмрдирд╡рддрд╛рдд: <> . рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реЗ рджреЗрдЦреАрд▓ рдорд╛рд╣рд┐рдд рдЕрд╕рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ рдХреА рдбрд╛рдпрдордВрдб рд╡рд╛рдХреНрдпрд░рдЪрдирд╛ " рдкреНрд░рдХрд╛рд░ рдЕрдиреБрдорд╛рди " рдпрд╛ рд╕рдВрдХрд▓реНрдкрдиреЗрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗ . рд╢реЗрд╡рдЯреА, рдХрдВрдкрд╛рдЗрд▓рд░, <> рдкрд╛рд╣реВрдирдЙрдЬрд╡реАрдХрдбреЗ, рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░рдЪреНрдпрд╛ рдбрд╛рд╡реНрдпрд╛ рдмрд╛рдЬреВрд▓рд╛ рдкрд╛рд╣рддреЛ, рдЬрд┐рдереЗ рддреЛ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рдЪрд╛ рдкреНрд░рдХрд╛рд░ рд╢реЛрдзрддреЛ рдЬреНрдпрд╛рдЪреЗ рдореВрд▓реНрдп рдирд┐рдпреБрдХреНрдд рдХреЗрд▓реЗ рдЬрд╛рдд рдЖрд╣реЗ. рдпрд╛ рднрд╛рдЧрд╛рдд рдХрд╛рдп рд╕рд╛рдкрдбрддреЗ рдпрд╛рд╡рд░ рдЖрдзрд╛рд░рд┐рдд, рддреЗ рдЙрдЬрд╡реАрдХрдбреАрд▓ рдореВрд▓реНрдпрд╛рдЪрд╛ рдкреНрд░рдХрд╛рд░ рд╕рдордЬрддреЗ. рдЦрд░реЗрддрд░, рдбрд╛рд╡реАрдХрдбреЗ рдЬреЗрдиреЗрд░рд┐рдХ рдкреНрд░рдХрд╛рд░ рджрд┐рд▓реЗрд▓рд╛ рдЕрд╕рд▓реНрдпрд╛рд╕, рдкрд░рдВрддреБ рдЙрдЬрд╡реАрдХрдбреЗ рдирд╛рд╣реА, рддрд░ рдХрдВрдкрд╛рдпрд▓рд░ рдкреНрд░рдХрд╛рд░рд╛рдЪрд╛ рдЕрдВрджрд╛рдЬ рд▓рд╛рд╡реВ рд╢рдХрддреЛ:
import java.util.*;
public class HelloWorld {
	public static void main(String []args) {
		List<String> list = new ArrayList();
		list.add("Hello, World");
		String data = list.get(0);
		System.out.println(data);
	}
}
рдкрд░рдВрддреБ рд╣реЗ рдЬреЗрдиреЗрд░рд┐рдХрд╕рд╣ рдирд╡реАрди рд╢реИрд▓реА рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреНрдпрд╛рд╢рд┐рд╡рд╛рдп рдЬреБрдиреНрдпрд╛ рд╢реИрд▓реАрдЪреЗ рдорд┐рд╢реНрд░рдг рдХрд░рддреЗ. рдЖрдгрд┐ рд╣реЗ рдЕрддреНрдпрдВрдд рдЕрд╡рд╛рдВрдЫрдиреАрдп рдЖрд╣реЗ. рд╡рд░реАрд▓ рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛рдирд╛, рдЖрдореНрд╣рд╛рд▓рд╛ рдЦрд╛рд▓реАрд▓ рд╕рдВрджреЗрд╢ рдорд┐рд│рддрд╛рдд:
Note: HelloWorld.java uses unchecked or unsafe operations
рдЦрд░рдВ рддрд░, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдпреЗрдереЗ рд╣рд┐рд░рд╛ рдХрд╛ рдЬреЛрдбрдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ рдпрд╛рдЪреЗ рдХрд╛рд░рдг рд╕рдордЬрдгреНрдпрд╛рд╕рд╛рд░рдЦреЗ рдирд╛рд╣реА. рдкрд░рдВрддреБ рдпреЗрдереЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЖрд╣реЗ:
import java.util.*;
public class HelloWorld {
	public static void main(String []args) {
		List<String> list = Arrays.asList("Hello", "World");
		List<Integer> data = new ArrayList(list);
		Integer intNumber = data.get(0);
		System.out.println(data);
	}
}
рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдард╡рдд рдЕрд╕реЗрд▓ рдХреА ArrayList рдордзреНрдпреЗ рджреБрд╕рд░рд╛ рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдЖрд╣реЗ рдЬреЛ рд╡рд┐рддрд░реНрдХ рдореНрд╣рдгреВрди рд╕рдВрдЧреНрд░рд╣ рдШреЗрддреЛ. рдЖрдгрд┐ рдЗрдереЗрдЪ рдХрд╛рд╣реАрддрд░реА рднрдпрдВрдХрд░ рджрдбрд▓реЗрд▓реЗ рдЖрд╣реЗ. рдбрд╛рдпрдордВрдб рд╕рд┐рдВрдЯреЕрдХреНрд╕рд╢рд┐рд╡рд╛рдп, рдХрдВрдкрд╛рдЗрд▓рд░рд▓рд╛ рд╕рдордЬрдд рдирд╛рд╣реА рдХреА рддреНрдпрд╛рдЪреА рдлрд╕рд╡рдгреВрдХ рдЭрд╛рд▓реА рдЖрд╣реЗ. рдбрд╛рдпрдордВрдб рд╕рд┐рдВрдЯреЕрдХреНрд╕рд╕рд╣, рддреЗ рдХрд░рддреЗ. рддрд░, рдирд┐рдпрдо #1 рдЖрд╣реЗ: рдиреЗрд╣рдореА рдкреЕрд░рд╛рдореАрдЯрд░рд╛рдЗрдЬреНрдб рдкреНрд░рдХрд╛рд░рд╛рдВрд╕рд╣ рдбрд╛рдпрдордВрдб рд╕рд┐рдВрдЯреЕрдХреНрд╕ рд╡рд╛рдкрд░рд╛. рдЕрдиреНрдпрдерд╛, рдЖрдореНрд╣реА рдЬреЗрдереЗ рдХрдЪреНрдЪреЗ рдкреНрд░рдХрд╛рд░ рд╡рд╛рдкрд░рдд рдЖрд╣реЛрдд рддреЗрдереЗ рдЧрд╣рд╛рд│ рд╣реЛрдгреНрдпрд╛рдЪрд╛ рдзреЛрдХрд╛ рдЖрд╣реЗ. "рдЕрдирдЪреЗрдХ рдХреЗрд▓реЗрд▓реЗ рдХрд┐рдВрд╡рд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдСрдкрд░реЗрд╢рдиреНрд╕ рд╡рд╛рдкрд░рддреЗ" рдЪреЗрддрд╛рд╡рдгреА рдХрд╛рдвреВрди рдЯрд╛рдХрдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рдкрджреНрдзрдд рдХрд┐рдВрд╡рд╛ рд╡рд░реНрдЧрд╛рд╡рд░ @SuppressWarnings("рдЕрдирдЪреЗрдХ рдХреЗрд▓реЗрд▓реЗ") рднрд╛рд╖реНрдп рд╡рд╛рдкрд░реВ рд╢рдХрддреЛ . рдкрдг рддреБрдореНрд╣реА рддреЗ рд╡рд╛рдкрд░рд╛рдпрдЪреЗ рдХрд╛ рдард░рд╡рд▓реЗ рдЖрд╣реЗ рдпрд╛рдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░рд╛. рдирд┐рдпрдо рдХреНрд░рдорд╛рдВрдХ рдПрдХ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рд╛. рдХрджрд╛рдЪрд┐рдд рддреБрдореНрд╣рд╛рд▓рд╛ рдПрдХ рдкреНрд░рдХрд╛рд░рдЪрд╛ рдпреБрдХреНрддрд┐рд╡рд╛рдж рдЬреЛрдбрдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ.

рдЬрд╛рд╡рд╛ рдЬреЗрдиреЗрд░рд┐рдХ рдкрджреНрдзрддреА

рдЬреЗрдиреЗрд░рд┐рдХреНрд╕ рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрд╢рд╛ рдкрджреНрдзрддреА рддрдпрд╛рд░ рдХрд░реВ рджреЗрддрд╛рдд рдЬреНрдпрд╛рдВрдЪреЗ рдкреЕрд░рд╛рдореАрдЯрд░ рдкреНрд░рдХрд╛рд░ рдЖрдгрд┐ рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдкреЕрд░рд╛рдореАрдЯрд░рд╛рдЗрдЬреНрдб рдЖрд╣реЗрдд. рдУрд░реЕрдХрд▓ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рдордзреНрдпреЗ рдпрд╛ рдХреНрд╖рдорддреЗрд╕рд╛рдареА рдПрдХ рд╡реЗрдЧрд│рд╛ рд╡рд┐рднрд╛рдЧ рд╕рдорд░реНрдкрд┐рдд рдЖрд╣реЗ: " рдЬреЗрдиреЗрд░рд┐рдХ рдкрджреНрдзрддреА ". рдпрд╛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рдордзреНрдпреЗ рд╢рд┐рдХрд╡рд▓реЗрд▓реЗ рд╡рд╛рдХреНрдпрд░рдЪрдирд╛ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рдгреЗ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗ:
  • рдпрд╛рдордзреНрдпреЗ рдЕрдБрдЧрд▓ рдмреНрд░реЕрдХреЗрдЯрдордзреАрд▓ рдкреНрд░рдХрд╛рд░ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕рдЪреА рд╕реВрдЪреА рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗ;
  • рдкреНрд░рдХрд╛рд░ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕рдЪреА рдпрд╛рджреА рдкрджреНрдзрддреАрдЪреНрдпрд╛ рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░рд╛рдкреВрд░реНрд╡реА рдЬрд╛рддреЗ.
рдЪрд▓рд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд╛рд╣реВ:
import java.util.*;
public class HelloWorld {

    public static class Util {
        public static <T> T getValue(Object obj, Class<T> clazz) {
            return (T) obj;
        }
        public static <T> T getValue(Object obj) {
            return (T) obj;
        }
    }

    public static void main(String []args) {
		List list = Arrays.asList("Author", "Book");
		for (Object element : list) {
		    String data = Util.getValue(element, String.class);
		    System.out.println(data);
		    System.out.println(Util.<String>getValue(element));
		}
    }
}
рддреБрдореНрд╣реА Util рд╡рд░реНрдЧ рдкрд╛рд╣рд┐рд▓реНрдпрд╛рд╕ , рддреБрдореНрд╣рд╛рд▓рд╛ рджрд┐рд╕реЗрд▓ рдХреА рддреНрдпрд╛рдд рджреЛрди рд╕рд╛рдорд╛рдиреНрдп рдкрджреНрдзрддреА рдЖрд╣реЗрдд. рдкреНрд░рдХрд╛рд░ рдЕрдиреБрдорд╛рдирд╛рдЪреНрдпрд╛ рд╢рдХреНрдпрддреЗрдмрджреНрджрд▓ рдзрдиреНрдпрд╡рд╛рдж, рдЖрдореНрд╣реА рдПрдХрддрд░ рдкреНрд░рдХрд╛рд░ рдереЗрдЯ рдХрдВрдкрд╛рдЗрд▓рд░рд▓рд╛ рд╕реВрдЪрд┐рдд рдХрд░реВ рд╢рдХрддреЛ рдХрд┐рдВрд╡рд╛ рдЖрдореНрд╣реА рддреЗ рд╕реНрд╡рддрдГ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддреЛ. рджреЛрдиреНрд╣реА рдкрд░реНрдпрд╛рдп рдЙрджрд╛рд╣рд░рдгрд╛рдд рд╕рд╛рджрд░ рдХреЗрд▓реЗ рдЖрд╣реЗрдд. рддрд╕реЗ, рдЖрдкрдг рд╡рд┐рдЪрд╛рд░ рдХреЗрд▓реНрдпрд╛рд╕ рд╡рд╛рдХреНрдпрд░рдЪрдирд╛ рдЦреВрдк рдЕрд░реНрдердкреВрд░реНрдг рдЖрд╣реЗ. рдЬреЗрдиреЗрд░рд┐рдХ рдкрджреНрдзрдд рдШреЛрд╖рд┐рдд рдХрд░рддрд╛рдирд╛, рдЖрдореНрд╣реА рдкрджреНрдзрддреАрдЪреНрдпрд╛ рдЖрдзреА рдкреНрд░рдХрд╛рд░ рдкреЕрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЛ, рдХрд╛рд░рдг рдЬрд░ рдЖрдореНрд╣реА рдкрджреНрдзрддреА рдирдВрддрд░ рдкреНрд░рдХрд╛рд░ рдкреЕрд░рд╛рдореАрдЯрд░ рдШреЛрд╖рд┐рдд рдХреЗрд▓реЗ, рддрд░ JVM рдХреЛрдгрддрд╛ рдкреНрд░рдХрд╛рд░ рд╡рд╛рдкрд░рд╛рдпрдЪрд╛ рд╣реЗ рд╢реЛрдзрдгреНрдпрд╛рдд рд╕рдХреНрд╖рдо рд╣реЛрдгрд╛рд░ рдирд╛рд╣реА. рддреНрдпрд╛рдиреБрд╕рд╛рд░, рдЖрдореНрд╣реА рдкреНрд░рдердо рдШреЛрд╖рд┐рдд рдХрд░рддреЛ рдХреА рдЖрдореНрд╣реА T рдкреНрд░рдХрд╛рд░ рдкреЕрд░рд╛рдореАрдЯрд░ рд╡рд╛рдкрд░реВ , рдЖрдгрд┐ рдирдВрддрд░ рдЖрдореНрд╣реА рдореНрд╣рдгрддреЛ рдХреА рдЖрдореНрд╣реА рд╣рд╛ рдкреНрд░рдХрд╛рд░ рдкрд░рдд рдХрд░рдгрд╛рд░ рдЖрд╣реЛрдд. рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХрдЪ, Util.<Integer>getValue(element, String.class) рддреНрд░реБрдЯреАрд╕рд╣ рдЕрдпрд╢рд╕реНрд╡реА рд╣реЛрдИрд▓:рд╡рд┐рд╕рдВрдЧрдд рдкреНрд░рдХрд╛рд░: Class<String> рд▓рд╛ Class<Integer> рдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрдд рдирд╛рд╣реА . рдЬреЗрдиреЗрд░рд┐рдХ рдкрджреНрдзрддреА рд╡рд╛рдкрд░рддрд╛рдирд╛, рддреБрдореНрд╣реА рдиреЗрд╣рдореА рдЯрд╛рдЗрдк рдЗрд░реЗрдЬрд░ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рд╛рд╡реЗ. рдЪрд▓рд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд╛рд╣реВ:
import java.util.*;
public class HelloWorld {

    public static class Util {
        public static <T> T getValue(Object obj) {
            return (T) obj;
        }
    }

    public static void main(String []args) {
		List list = Arrays.asList(2, 3);
		for (Object element : list) {
		    System.out.println(Util.<Integer>getValue(element) + 1);
		}
    }
}
рд╣реЗ рдЕрдЧрджреА рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЪрд╛рд▓реЗрд▓. рдкрдг рдЬреЛрдкрд░реНрдпрдВрдд рдХрдВрдкрд╛рдЗрд▓рд░рд▓рд╛ рд╕рдордЬрддреЗ рдХреА рдЬреНрдпрд╛ рдкрджреНрдзрддреАрд▓рд╛ рдХреЙрд▓ рдХреЗрд▓рд╛ рдЬрд╛рдд рдЖрд╣реЗ рддреНрдпрд╛рдЪрд╛ рд░рд┐рдЯрд░реНрди рдкреНрд░рдХрд╛рд░ рдкреВрд░реНрдгрд╛рдВрдХ рдЖрд╣реЗ . рдХрдиреНрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдЦрд╛рд▓реАрд▓ рдУрд│реАрдиреЗ рдмрджрд▓рд╛:
System.out.println(Util.getValue(element) + 1);
рдЖрдореНрд╣рд╛рд▓рд╛ рдПрдХ рддреНрд░реБрдЯреА рдорд┐рд│рд╛рд▓реА:
bad operand types for binary operator '+', first type: Object, second type: int.
рджреБрд╕рд▒реНрдпрд╛ рд╢рдмреНрджрд╛рдВрдд, рдЯрд╛рдЗрдк рдЗрд░реЗрдЬрд░ рдЖрд▓реА рдЖрд╣реЗ. рдХрдВрдкрд╛рдЗрд▓рд░ рдкрд╛рд╣рддреЛ рдХреА рдХреЛрдгреАрд╣реА рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓рд╛ рдирд╛рд╣реА, рдореНрд╣рдгреВрди рдкреНрд░рдХрд╛рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдореНрд╣рдгреВрди рджрд░реНрд╢рд╡рд┐рд▓рд╛ рдЬрд╛рддреЛ рдЖрдгрд┐ рдкрджреНрдзрдд рддреНрд░реБрдЯреАрд╕рд╣ рдЕрдпрд╢рд╕реНрд╡реА рд╣реЛрддреЗ.

рд╕рд╛рдорд╛рдиреНрдп рд╡рд░реНрдЧ

рдХреЗрд╡рд│ рдкрджреНрдзрддреАрдВрдЪреЗ рдкреЕрд░рд╛рдореАрдЯрд░рд╛рдЗрдЬреНрдб рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрдд рдирд╛рд╣реА. рд╡рд░реНрдЧ рддрд╕реЗрдЪ рдХрд░реВ рд╢рдХрддрд╛. рдУрд░реЕрдХрд▓рдЪреНрдпрд╛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рдЪрд╛ "рдЬреЗрдиреЗрд░рд┐рдХ рдкреНрд░рдХрд╛рд░" рд╡рд┐рднрд╛рдЧ рдпрд╛рд╕рд╛рдареА рд╕рдорд░реНрдкрд┐рдд рдЖрд╣реЗ. рдЪрд▓рд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреЗрдКрдпрд╛:
public static class SomeType<T> {
	public <E> void test(Collection<E> collection) {
		for (E element : collection) {
			System.out.println(element);
		}
	}
	public void test(List<Integer> collection) {
		for (Integer element : collection) {
			System.out.println(element);
		}
	}
}
рдпреЗрдереЗ рд╕рд░реНрд╡ рдХрд╛рд╣реА рд╕реЛрдкреЗ рдЖрд╣реЗ. рдЖрдкрдг рдЬреЗрдиреЗрд░рд┐рдХ рдХреНрд▓рд╛рд╕ рд╡рд╛рдкрд░рд▓реНрдпрд╛рд╕, рдкреНрд░рдХрд╛рд░ рдкреЕрд░рд╛рдореАрдЯрд░ рд╡рд░реНрдЧрд╛рдЪреНрдпрд╛ рдирд╛рд╡рд╛рдирдВрддрд░ рджрд░реНрд╢рд╡рд┐рд▓рд╛ рдЬрд╛рддреЛ. рдЖрддрд╛ рдореБрдЦреНрдп рдкрджреНрдзрддреАрдордзреНрдпреЗ рдпрд╛ рд╡рд░реНрдЧрд╛рдЪреЗ рдЙрджрд╛рд╣рд░рдг рдмрдирд╡реВ :
public static void main(String []args) {
	SomeType<String> st = new SomeType<>();
	List<String> list = Arrays.asList("test");
	st.test(list);
}
рд╣рд╛ рдХреЛрдб рдЪрд╛рдВрдЧрд▓рд╛ рдЪрд╛рд▓реЗрд▓. рд╕рдВрдХрд▓рдХ рдкрд╛рд╣рддреЛ рдХреА рд╕рдВрдЦреНрдпрд╛рдВрдЪреА рд╕реВрдЪреА рдЖрдгрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕рдЪрд╛ рд╕рдВрдЧреНрд░рд╣ рдЖрд╣реЗ . рдкрд░рдВрддреБ рдЬрд░ рдЖрдкрдг рдЯрд╛рдЗрдк рдкреЕрд░рд╛рдореАрдЯрд░ рдХрд╛рдвреВрди рдЯрд╛рдХрд▓реЗ рдЖрдгрд┐ рд╣реЗ рдХреЗрд▓реЗ рддрд░ рдХрд╛рдп рд╣реЛрдИрд▓:
SomeType st = new SomeType();
List<String> list = Arrays.asList("test");
st.test(list);
рдЖрдореНрд╣рд╛рд▓рд╛ рдПрдХ рддреНрд░реБрдЯреА рдорд┐рд│рд╛рд▓реА:
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
рдкреБрдиреНрд╣рд╛, рд╣реЗ рдкреНрд░рдХрд╛рд░ рдЗрд░реЗрдЬрд░ рдЖрд╣реЗ. рдХреНрд▓рд╛рд╕ рдпрд╛рдкреБрдвреЗ рдЯрд╛рдЗрдк рдкреЕрд░рд╛рдореАрдЯрд░ рд╡рд╛рдкрд░рдд рдирд╕рд▓реНрдпрд╛рдореБрд│реЗ, рдХрдВрдкрд╛рдЗрд▓рд░ рдард░рд╡рддреЛ рдХреА, рдЖрдореНрд╣реА рдПрдХ List рдкрд╛рд╕ рдХреЗрд▓реНрдпрд╛рдореБрд│реЗ, List<Integer> рд╣реА рдкрджреНрдзрдд рд╕рд░реНрд╡рд╛рдд рдпреЛрдЧреНрдп рдЖрд╣реЗ. рдЖрдгрд┐ рдЖрдореНрд╣реА рдПрдХрд╛ рддреНрд░реБрдЯреАрдиреЗ рдЕрдпрд╢рд╕реНрд╡реА рд╣реЛрддреЛ. рдореНрд╣рдгреВрди, рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдирд┐рдпрдо # 2 рдЖрд╣реЗ: рдЬрд░ рддреБрдордЪреНрдпрд╛рдХрдбреЗ рд╕рд╛рдорд╛рдиреНрдп рд╡рд░реНрдЧ рдЕрд╕реЗрд▓, рддрд░ рдиреЗрд╣рдореА рдкреНрд░рдХрд╛рд░ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рд╛.

рдирд┐рд░реНрдмрдВрдз

рдЖрдореНрд╣реА рдЬреЗрдиреЗрд░рд┐рдХ рдкрджреНрдзрддреА рдЖрдгрд┐ рд╡рд░реНрдЧрд╛рдВрдордзреНрдпреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреНрд░рдХрд╛рд░рд╛рдВрдирд╛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░реВ рд╢рдХрддреЛ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╕рдордЬрд╛ рдЖрдореНрд╣рд╛рд▓рд╛ рдХрдВрдЯреЗрдирд░рдиреЗ рдЯрд╛рдЗрдк рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯ рдореНрд╣рдгреВрди рдлрдХреНрдд рд╕рдВрдЦреНрдпрд╛ рд╕реНрд╡реАрдХрд╛рд░рд╛рдпрдЪреА рдЖрд╣реЗ . рдпрд╛ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдЪреЗ рд╡рд░реНрдгрди рдУрд░реЕрдХрд▓рдЪреНрдпрд╛ рдЯреНрдпреБрдЯреЛрд░рд┐рдпрд▓рдЪреНрдпрд╛ рдмрд╛рдЙрдВрдбреЗрдб рдЯрд╛рдЗрдк рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рд╡рд┐рднрд╛рдЧрд╛рдд рдХреЗрд▓реЗ рдЖрд╣реЗ. рдЪрд▓рд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд╛рд╣реВ:
import java.util.*;
public class HelloWorld {

    public static class NumberContainer<T extends Number> {
        private T number;

        public NumberContainer(T number) { this.number = number; }

        public void print() {
            System.out.println(number);
        }
    }

    public static void main(String []args) {
		NumberContainer number1 = new NumberContainer(2L);
		NumberContainer number2 = new NumberContainer(1);
		NumberContainer number3 = new NumberContainer("f");
    }
}
рддреБрдореНрд╣реА рдмрдШреВ рд╢рдХрддрд╛, рдЖрдореНрд╣реА рдЯрд╛рдЗрдк рдкреЕрд░рд╛рдореАрдЯрд░ рд╕рдВрдЦреНрдпрд╛ рд╡рд░реНрдЧ/рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд┐рдВрд╡рд╛ рддреНрдпрд╛рдЪреНрдпрд╛ рд╡рдВрд╢рдЬрд╛рдВрд╕рд╛рдареА рдорд░реНрдпрд╛рджрд┐рдд рдХреЗрд▓реЗ рдЖрд╣реЗ. рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рддреБрдореНрд╣реА рдХреЗрд╡рд│ рд╡рд░реНрдЧрдЪ рдирд╡реНрд╣реЗ рддрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рджреЗрдЦреАрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддрд╛. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде:
public static class NumberContainer<T extends Number & Comparable> {
рдЬреЗрдиреЗрд░рд┐рдХреНрд╕ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдбрд▓рд╛ рджреЗрдЦреАрд▓ рд╕рдорд░реНрдерди рджреЗрддрд╛рдд рддреЗ рддреАрди рдкреНрд░рдХрд╛рд░рд╛рдВрдордзреНрдпреЗ рд╡рд┐рднрд╛рдЧрд▓реЗрд▓реЗ рдЖрд╣реЗрдд: рддреБрдордЪрд╛ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рд╡рд╛рдкрд░рддрд╛рдирд╛ рдЧреЗрдЯ-рдкреБрдЯ рддрддреНрддреНрд╡рд╛рдЪреЗ рдкрд╛рд▓рди рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ . рд╣реЗ рдЦрд╛рд▓реАрд▓рдкреНрд░рдорд╛рдгреЗ рд╡реНрдпрдХреНрдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ:
  • рдЬреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣рд╛рд▓рд╛ рдХреЗрд╡рд│ рд╕рдВрд░рдЪрдиреЗрддреВрди рдореВрд▓реНрдпреЗ рдорд┐рд│рддрд╛рдд рддреЗрд╡реНрд╣рд╛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рд╡рд╛рдкрд░рд╛ .
  • рдЬреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣реА рдХреЗрд╡рд│ рд╕рдВрд░рдЪрдиреЗрдд рдореВрд▓реНрдпреЗ рдареЗрд╡рддрд╛ рддреЗрд╡реНрд╣рд╛ рд╕реБрдкрд░ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рд╡рд╛рдкрд░рд╛ .
  • рдЖрдгрд┐ рдЬреЗрд╡реНрд╣рд╛ рддреБрдореНрд╣реА рджреЛрдШрд╛рдВрдирд╛ рдПрдЦрд╛рджреНрдпрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░рдордзреВрди/рдордзреНрдпреЗ рдорд┐рд│рд╡рд╛рдпрдЪреЗ рдЕрд╕реЗрд▓ рдЖрдгрд┐ рдареЗрд╡рд╛рдпрдЪреЗ рдЕрд╕реЗрд▓ рддреЗрд╡реНрд╣рд╛ рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рд╡рд╛рдкрд░реВ рдирдХрд╛.
рдпрд╛ рддрддреНрддреНрд╡рд╛рд▓рд╛ рдкреНрд░реЛрдбреНрдпреВрд╕рд░ рдПрдХреНрд╕реНрдЯреЗрдВрдбреНрд╕ рдХрдиреНрдЭреНрдпреБрдорд░ рд╕реБрдкрд░ (PECS) рддрддреНрддреНрд╡ рдЕрд╕реЗрд╣реА рдореНрд╣рдгрддрд╛рдд. Java рдЪреНрдпрд╛ Collections.copy рдкрджреНрдзрддреАрд╕рд╛рдареА рд╕реНрддреНрд░реЛрдд рдХреЛрдбрдЪреЗ рдПрдХ рд▓рд╣рд╛рди рдЙрджрд╛рд╣рд░рдг рдпреЗрдереЗ рдЖрд╣реЗ : рдЬрд╛рд╡рд╛ рдордзреАрд▓ рдЬреЗрдиреЗрд░рд┐рдХ: рд╕рд░рд╛рд╡ рдордзреНрдпреЗ рдХреЛрди рдХрдВрд╕ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рд╡реЗ - 5рдЖрдгрд┐ рдХрд╛рдп рдХрд╛рд░реНрдп рдХрд░рдгрд╛рд░ рдирд╛рд╣реА рдпрд╛рдЪреЗ рдПрдХ рдЫреЛрдЯреЗ рдЙрджрд╛рд╣рд░рдг рдпреЗрдереЗ рдЖрд╣реЗ:
public static class TestClass {
	public static void print(List<? extends String> list) {
		list.add("Hello, World!");
		System.out.println(list.get(0));
	}
}

public static void main(String []args) {
	List<String> list = new ArrayList<>();
	TestClass.print(list);
}
рдкрд░рдВрддреБ рдЬрд░ рддреБрдореНрд╣реА рдПрдХреНрд╕реНрдЯреЗрдВрдбреНрд╕рд▓рд╛ рд╕реБрдкрд░рдиреЗ рдмрджрд▓рд▓реЗ рддрд░ рд╕рд░реНрд╡рдХрд╛рд╣реА рдареАрдХ рдЖрд╣реЗ. рдХрд╛рд░рдг рдЖрдореНтАНрд╣реА рд╕реВрдЪреАрдЪреА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдгреНтАНрдпрд╛рдкреВрд░реНрд╡реА рдореВрд▓реНрдпрд╛рд╕рд╣ рднрд░рддреЛ, рддреЛ рдПрдХ рдЙрдкрднреЛрдХреНтАНрддрд╛ рдЖрд╣реЗ . рддреНрдпрд╛рдиреБрд╕рд╛рд░, рдЖрдореНрд╣реА рд╕реБрдкрд░ рд╡рд╛рдкрд░рддреЛ.

рд╡рд╛рд░рд╕рд╛

рдЬреЗрдиреЗрд░рд┐рдХрдордзреНрдпреЗ рдЖрдгрдЦреА рдПрдХ рдордиреЛрд░рдВрдЬрдХ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рдЖрд╣реЗ: рд╡рд╛рд░рд╕рд╛. рдУрд░реЕрдХрд▓рдЪреНрдпрд╛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓рдордзреНрдпреЗ " рдЬреЗрдиреЗрд░рд┐рдХреНрд╕, рдЗрдирд╣реЗрд░рд┐рдЯрдиреНрд╕ рдЖрдгрд┐ рд╕рдмрдЯрд╛рдЗрдк " рдЕрдВрддрд░реНрдЧрдд рдЬреЗрдиреЗрд░рд┐рдХреНрд╕рд╕рд╛рдареА рд╡рд╛рд░рд╕рд╛ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдкрджреНрдзрддреАрдЪреЗ рд╡рд░реНрдгрди рдХреЗрд▓реЗ рдЖрд╣реЗ . рдорд╣рддреНрддреНрд╡рд╛рдЪреА рдЧреЛрд╖реНрдЯ рдореНрд╣рдгрдЬреЗ рдЦрд╛рд▓реАрд▓ рдЧреЛрд╖реНрдЯреА рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рдгреЗ рдЖрдгрд┐ рдУрд│рдЦрдгреЗ. рдЖрдореНрд╣реА рд╣реЗ рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА:
List<CharSequence> list1 = new ArrayList<String>();
рдХрд╛рд░рдг рд╡рд╛рд░рд╕рд╛ рдЬреЗрдиреЗрд░рд┐рдХрд╕рд╣ рд╡реЗрдЧрд│реНрдпрд╛ рдкрджреНрдзрддреАрдиреЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ: рдЬрд╛рд╡рд╛ рдордзреАрд▓ рдЬреЗрдиреЗрд░рд┐рдХреНрд╕: рд╕рд░рд╛рд╡ рдордзреНрдпреЗ рдХреЛрди рдХрдВрд╕ рдХрд╕реЗ рд╡рд╛рдкрд░рд╛рдпрдЪреЗ - 6рдЖрдгрд┐ рдпреЗрдереЗ рдЖрдгрдЦреА рдПрдХ рдЪрд╛рдВрдЧрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдЖрд╣реЗ рдЬреЗ рддреНрд░реБрдЯреАрд╕рд╣ рдЕрдпрд╢рд╕реНрд╡реА рд╣реЛрдИрд▓:
List<String> list1 = new ArrayList<>();
List<Object> list2 = list1;
рдкреБрдиреНрд╣рд╛, рдпреЗрдереЗ рд╕рд░реНрд╡рдХрд╛рд╣реА рд╕реЛрдкреЗ рдЖрд╣реЗ. List<String> рд╣реЗ List<object> рдЪрд╛ рд╡рдВрд╢рдЬ рдирд╛рд╣реА , рдЬрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдСрдмреНрдЬреЗрдХреНрдЯрдЪрд╛ рд╡рдВрд╢рдЬ рдЖрд╣реЗ . рддреБрдореНрд╣реА рдЬреЗ рд╢рд┐рдХрд▓рд╛рдд рддреЗ рдмрд│рдХрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣реА рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдордЪреНрдпрд╛ Java рдХреЛрд░реНрд╕рдордзреАрд▓ рд╡реНрд╣рд┐рдбрд┐рдУ рдзрдбрд╛ рдкрд╛рд╣рдгреНрдпрд╛рдЪреА рд╕реВрдЪрдирд╛ рджреЗрддреЛ

рдирд┐рд╖реНрдХрд░реНрд╖

рдореНрд╣рдгреВрди рдЖрдореНрд╣реА рдЬреЗрдиреЗрд░рд┐рдХрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЖрдордЪреА рд╕реНрдореГрддреА рддрд╛рдЬреА рдХреЗрд▓реА рдЖрд╣реЗ. рддреБрдореНрд╣реА рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдХреНрд╖рдорддрд╛рдВрдЪрд╛ рдХреНрд╡рдЪрд┐рддрдЪ рдкреБрд░реЗрдкреВрд░ рдлрд╛рдпрджрд╛ рдШреЗрддрд▓реНрдпрд╛рд╕, рдХрд╛рд╣реА рддрдкрд╢реАрд▓ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реЛрддрд╛рдд. рдорд▓рд╛ рдЖрд╢рд╛ рдЖрд╣реЗ рдХреА рдпрд╛ рд▓рд╣рд╛рди рдкреБрдирд░рд╛рд╡рд▓реЛрдХрдирд╛рдиреЗ рддреБрдордЪреА рд╕реНрдорд░рдгрд╢рдХреНрддреА рд╡рд╛рдврдгреНрдпрд╛рд╕ рдорджрдд рдХреЗрд▓реА рдЖрд╣реЗ. рдЖрдгрдЦреА рдЪрд╛рдВрдЧрд▓реНрдпрд╛ рдкрд░рд┐рдгрд╛рдорд╛рдВрд╕рд╛рдареА, рдореА рдЬреЛрд░рджрд╛рд░ рд╢рд┐рдлрд╛рд░рд╕ рдХрд░рддреЛ рдХреА рдЖрдкрдг рдЦрд╛рд▓реАрд▓ рд╕рд╛рдордЧреНрд░реАрд╕рд╣ рд╕реНрд╡рдд: рд▓рд╛ рдкрд░рд┐рдЪрд┐рдд рдХрд░рд╛:
рдЯрд┐рдкреНрдкрдгреНрдпрд╛
  • рд▓реЛрдХрдкреНрд░рд┐рдп
  • рдирд╡реАрди
  • рдЬреБрдиреЗ
рдЯрд┐рдкреНрдкрдгреА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреБрдореНрд╣реА рд╕рд╛рдИрди рдЗрди рдХреЗрд▓реЗрд▓реЗ рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ
рдпрд╛ рдкрд╛рдирд╛рд╡рд░ рдЕрдЬреВрди рдХреЛрдгрддреНрдпрд╛рд╣реА рдЯрд┐рдкреНрдкрдгреНрдпрд╛ рдирд╛рд╣реАрдд