1、定一个类
public class A{//定义一个类A}
2、定一个方法,类A作为参数传递
public void show(A a){//类作为参数传递
}
} static class DoingJob<T> where T : new()
{
public T JustDoIt()
{
return new T();
}
}
var item = DoingJob<ClassName>JustDoIt();我只能说你这样写错的很离谱,这样解释吧,
第一点:你的public void b<T>中的泛型是T,而紧跟后面的约束是BaseClass,我明白你的意思,是想让b方法里面的参数是BaseClass<S>类型的,但是你却写了BaseClass<T>,你的T已经代表BaseClass<S>类型了,这是何解?改成b<T,S>(T t1) where T:BaseClass<S>,把BaseClass里面的泛型和你的方法里面的泛型区分开。
第二点,调用泛型方法的时候,必须b<T,S>(T类型的实例)这样写。标明泛型,综上以及截图代码得出,应该为b<BaseClass<string>,string>(s);首先,你要理解为什么使用集合框架:如果并不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象—可以使用java集合框架。
其次,稍微理解一下泛型的机制:将对象的类型作为参数,指定到其它类或者方法上,从而保证类型转换的安全性和稳定性;本质是参数化类型;创建的集合只能存放<>中写的类型元素,不能存放别的类型的元素,因此取出元素时也就不需要强转了;泛型中不能存放基本数据类型等。
通俗的说,就是保证存入集合中的数据的安全性,例如,本来集合中可以存储各种数据类型的数据有int,string,char等等,只是存进去之后就自动变成Object类型的啦。现在用泛型的话,就是一种约束,即只能存放我们规定的数据类型的元素,如:
ArrayList<String> students = new ArrayList<String>();
现在在集合中只能存放String类型的参数了,此时你要传入的参数id就只能是String类型的啦。
ArrayList<Student>students = new ArrayList<Student>();
现在在集合中只能存放Studeng类型的参数了,存放其他数据类型时,就会出错,所以说保证了数据的安全性。
基本就这么多啦,可以多交流,相互帮助,希望可以帮到你呀!!!Java的泛型就是创建一个用类型作为参数的类。就象我们写类的方法一样,方法是这样的method(String str1,String str2 ),方法中参数str1、str2的值是可变的。而泛型也是一样的,定义泛型 一般用 T 表示 public <T> List<T> method(T t){ 方法体} 。它的参数 就是 T 一个类型,你传什么类型的对象,T就是什么类型。
T将是 可变的类型。可以这样写: public static void SaveData(List data) where T : BaseClass { } 然后,调用的时候,这样: SaveData(listA); 这样,你的SaveData方法只能接受泛型为BaseClass或者其子类的集合对象作为参数了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)