| 
			
	
	
	
						  
						
						
						
	
 
	本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
	 
			 
	3分22秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器 示例 1 : 不使用泛型 示例 2 : 使用泛型 示例 3 : 子类对象 示例 4 : 泛型的简写 示例 5 : 练习-泛型 示例 6 : 答案-泛型 
					不使用泛型带来的问题 
					
				ADHero(物理攻击英雄) APHero(魔法攻击英雄)都是Hero的子类 ArrayList 默认接受Object类型的对象,所以所有对象都可以放进ArrayList中 所以get(0) 返回的类型是Object 接着,需要进行强制转换才可以得到APHero类型或者ADHero类型。 如果软件开发人员记忆比较好,能记得哪个是哪个,还是可以的。 但是开发人员会犯错误,比如第20行,会记错,把第0个对象转换为ADHero,这样就会出现类型转换异常 package generic;
import java.util.ArrayList;
import charactor.ADHero;
import charactor.APHero;
public class TestGeneric {
	public static void main(String[] args) {
		
		ArrayList heros = new ArrayList();
		
		heros.add(new APHero());
		heros.add(new ADHero());
		
		APHero apHero =  (APHero) heros.get(0);
		ADHero adHero =  (ADHero) heros.get(1);
		
		ADHero adHero2 =  (ADHero) heros.get(0);
	}
}
 
								
										
									
								
							
					使用泛型的好处: 
					
				泛型的用法是在容器后面添加<Type> Type可以是类,抽象类,接口 泛型表示这种容器,只能存放APHero,ADHero就放不进去了。 package generic;
import java.util.ArrayList;
import charactor.APHero;
public class TestGeneric {
	public static void main(String[] args) {
		ArrayList<APHero> heros = new ArrayList<APHero>();
		
		//只有APHero可以放进去		
		heros.add(new APHero());
		
		//ADHero甚至放不进去
		//heros.add(new ADHero());
		
		//获取的时候也不需要进行转型,因为取出来一定是APHero
		APHero apHero =  heros.get(0);
		
	}
}
 
								
										
									
								
							
					假设容器的泛型是Hero,那么Hero的子类APHero,ADHero都可以放进去
 
					
				和Hero无关的类型Item还是放不进去 package generic;
import java.util.ArrayList;
import property.Item;
import charactor.ADHero;
import charactor.APHero;
import charactor.Hero;
public class TestGeneric {
	public static void main(String[] args) {
		ArrayList<Hero> heros = new ArrayList<Hero>();
		
		//只有作为Hero的子类可以放进去		
		heros.add(new APHero());
		heros.add(new ADHero());
		
		//和Hero无关的类型Item还是放不进去
		//heros.add(new Item());
		
	}
}
 
								
										
									
								
							
					为了不使编译器出现警告,需要前后都使用泛型,像这样: 
					
				ArrayList<Hero> heros = new ArrayList<Hero>(); 不过JDK7提供了一个可以略微减少代码量的泛型简写方式 ArrayList<Hero> heros2 = new ArrayList<>(); 后面的泛型可以用<>来代替,聊胜于无吧 package generic;
 
import java.util.ArrayList;
import charactor.Hero;
 
public class TestGeneric {
 
    public static void main(String[] args) {
        ArrayList<Hero> heros = new ArrayList<Hero>();
        //后面可以只用<>
        ArrayList<Hero> heros2 = new ArrayList<>();
        
    }
}
 
									
								package generic;
 
import java.util.ArrayList;
import charactor.Hero;
 
public class TestGeneric {
 
    public static void main(String[] args) {
        ArrayList<Hero> heros = new ArrayList<Hero>();
        //后面可以只用<>
        ArrayList<Hero> heros2 = new ArrayList<>();
        
    }
}
								
								
					根据数字类的知识,设计一个集合,这个集合里即可以放整数,也可以放浮点数,但是不能放字符串
					 
					
				
				
										
				在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
			 
					
			
		
	
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
 
	
	
	 
	42秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器 
					泛型使用Number, 就可以放所有Number的子类,比如Integer,Float,Double 
					
				但是不能放String package generic;
   
import java.util.ArrayList;
   
public class TestGeneric {
   
    public static void main(String[] args) {
        ArrayList<Number> numbers = new ArrayList<>();
        numbers.add(123);//int
        numbers.add(123f);//float
        numbers.add(123d);//double
        
        numbers.add("String");
        
    }
      
}
 
									
								package generic;
   
import java.util.ArrayList;
   
public class TestGeneric {
   
    public static void main(String[] args) {
        ArrayList<Number> numbers = new ArrayList<>();
        numbers.add(123);//int
        numbers.add(123f);//float
        numbers.add(123d);//double
        
        numbers.add("String");
        
    }
      
}
								
								
				HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
			 
			 
			
			
			
			
			
		
		
		
		 	问答区域     
		 	
				
		  
	 
	  		
	  
	  	2022-06-07
	  		
	  				
	  					 
	  
					
						答案 
					
					
						
							
						
											
							
					
					
					
	   
	  
	  
	  
 
7 个答案 
	 
木宇 跳转到问题位置 答案时间:2024-07-10 打卡 
		
							
		
			
			
		
		
		
			
		
		
	
		
		实习英雄 跳转到问题位置 答案时间:2023-12-21 import java.util.ArrayList;
public class NumberCollection {
  public static void main(String[] args) {
    // 创建一个只能存放Number类型对象的ArrayList
    ArrayList<Number> numbers = new ArrayList<>();
    // 添加整数(Integer)和浮点数(Double)
    numbers.add(5);     // 自动装箱为Integer
    numbers.add(3.14);  // 自动装箱为Double
    // 如果尝试添加字符串,下面这行将在编译时报错
    // numbers.add("字符串"); // 编译错误
    // 输出集合内容
    for (Number num : numbers) {
      System.out.println(num);
    }
  }
} 
		
							
		
		
		
		
	
		
		hhh1996 跳转到问题位置 答案时间:2023-08-21 List<Number> list= new ArrayList<>();
		list.add(11);
		list.add(11.1);
		//list.add("11"); 
		
							
		
		
		
		
	
		
		LUO萝北 跳转到问题位置 答案时间:2023-04-27 List<Number> list = new ArrayList<>(); 
		
							
		
		
		
		
	
		
		314115926 跳转到问题位置 答案时间:2023-03-13 cwhandlfz 跳转到问题位置 答案时间:2023-02-02         ArrayList<Number> numbers= new ArrayList<>();
 
		
							
		
		
		
		
	
		
		wanliu 跳转到问题位置 答案时间:2023-01-23 List<Number> numbers= new ArrayList<>(); 
		
							
		
		
		
		
	
	
	
		回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢	
	 
	  		
	  
	  	2022-05-13
	  		
	  				
	  					 
	  
					
						为什么这么写不对,是我想复杂了吗 
					
					
						
							
						
											
							
					
					
					
	   
	  
	  
	  
 
3 个答案 
	 
晚安嘛 跳转到问题位置 答案时间:2024-03-27 参数加一个Object O,把要加的数据类型传到这里判断 
		
							
		
		
		
		
	
		
		wr123 跳转到问题位置 答案时间:2023-11-15 import java.io.File;
import java.util.*;
public class Main {
    public static void main(String[] args) {
        List<Number> number= new ArrayList<>();
        number.add(11);
        number.add(11.1);
        //list.add("11");//报错显示,string类型不符合
    }
} 
		
							
		
		
		
		
	
		
		多姆达 跳转到问题位置 答案时间:2022-06-05 貌似是因为空参构造不行,把 I 和 F 加进去之后能跑了 
		
							
		
			
			
		
		
		
			
		
		
	
	
	
		回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢	
	 
	  		
	  
	  	2021-01-07
	  		
	  				
	  					 
	  
					
						大佬 咱过来也只是学习的  请把F12的屏蔽解开  这个也只是前端的简单处理下 还是可以看到的  好的方案建议把视频地址做成动态的   
					
					
						
							
						
											
							
					
					
					
	   
	  
	  
	  	    
	    
	  
	  		
	  
	  	2021-01-07
	  		
	  				
	  					 
	  
					
						大佬要收费直接把视频做了点击再给出视频地址嘛 ,别直接做个隐藏一下就找到了 没意义   
					
					
						
							
						
											
							
					
					
					
	   
	  
	  
	  	    
	    
	  
	  		
	  
	  	2020-07-10
	  		
	  				
	  					 
	  
					
						答案 
					
					
						
							
						
											
							
					
					
					
	   
	  
	  
	  	    
	    
	  提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 6 条以前的提问,请 点击查看 
			
			提问之前请登陆
			
		 
		提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢	
	 
 |