这个类里有多少错误?(答案)

系统 1869 0
答案其实很简单,都是非常基础的东西,但是平时可能不太在意这些细节,在找的时候也有可能不太确定(对我来说 )。

答案如下:

    
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import org.junit.Test;


public class GenericTest {

	static class Person {
		public void m(Collection<Person> persons) {
			
		}
	}
	
	//泛型声明要放在返回值的前面,所以<T>要放在void前面
	static class Employee extends Person {
		public void <T> isManager() {
		}
		
	}
	
	//泛型不具有协变性,所以下面是编译不了的
	static class Student extends Person {
		public void m2(Collection<Student> students) {
			super.m(students);
		}
		
	}
	
	
	//数组具有协变性,对于用父类声明的子类数组,在设置其他子类对象的时候虽然编译不报错,但是运行时会抛出ArrayStoreException
	@Test(expected=ArrayStoreException.class)
	public void arrayStoreExceptionTest() {
		Person[] persons = new Employee[5];
		persons[0] = new Employee();
		persons[1] = new Student();
	}
	
	//下面是正确的
	@Test
	public void arrayStoreTest() {
		Person[] persons = new Person[2];
		persons[0] = new Employee();
		persons[1] = new Student();
	}
	//下面语句在编译时就会出错,体现出泛型列表不具有协变性
	public void genericTest() {
		List<Person> personList = new ArrayList<Employee>();
	}
	
	
	
	
	//static方法和static域均不可引用类的泛型变量,下例中即T
	static class Generic<T> {
		
		static T t;
		
		static void method1(T t) {
			
		}
		void m1(T t){
			
		}
		
	}
}


  

这个类里有多少错误?(答案)


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论