泛型总结篇:
1)泛型参数只能是类类型
例如:List<int> // 报错
List<Integer> // 正确
2)泛型的类型参数可以有多个!
例如:List<Integer,String,Boolean> list = new
ArrayList<Integer,String,Boolean>();
3)泛型的参数类型可以使用extends,习惯称“有界类型”,
例如:List<student extends person>,person为list的上界
4)泛型可以使用通配符类型!“?” 相当于“Object”类型,(注意不可逆) 例如:List<?> //定义成这样可以添加Object类型到List里面去 List<Object>; //定义成这样不可以添加String类型到List里面去 List<? extends Object>; // 这样就可以互等了!这样还可以设定泛型的上限
5)带泛型的类,构造方法写法不变,其后不可以加泛型!
…… …… 余下全文
Java泛型总结
1. 什么是泛型?
泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样。
可以在集合框架(Collection framework)中看到泛型的动机。例如,Map 类允许您向一个 Map 添加任意类的对象,即使最常见的情况是在给定映射(map)中保存某个特定类型(比如 String)的对象。
因为 Map.get() 被定义为返回 Object,所以一般必须将 Map.get() 的结果强制类型转换为期望的类型,如下面的代码所示:
Map m = new HashMap();
m.put("key", "blarg");
String s = (String) m.get("key");
要让程序通过编译,必须将 get() 的结果强制类型转换为 String,并且希望结果真的是一个 String。但是有可能某人已经在该映射中保存了不是 String 的东西,这样的话,上面的代码将会抛出 ClassCastException。
…… …… 余下全文
泛型
一、泛型体验
泛型是framework 2.0加入的一种特殊的算法重用机制,允许程序员在代码中将变量的类型先用类型占位符来替代,等到运行的时候在根据传入的类来替换。
Demo1
MyList类:
1 public class MyList<T>
2 {
3 T[] arr;
4 public int count=0;
5 public MyList(int length)
6 {
7 arr = new T[length];
8 }
9 public void Add(T t)
10 {
11 arr[count] = t;
12 count++;
13 }
14
15 /// <summary>
16 /// 索引器
17 /// </summary>
18 /// <param name="index"></param>
…… …… 余下全文
一、 泛型
参数化类型
泛型
可以操作接口、类或方法
1. 泛型的作用
<1>保证编译时的类型正确
<2>代码的复用性强
<3>代码安全性高
classGenericClass<T>{
private t obj;//指定了类型变量的类型 publicGenericClass(T obj){
this.obj=obj;
}
public T getObj(){//指定了方法的返回值类型 Return obj;
}
}
在使用泛型时,使用实例的类型来代替类型变量就可以实例化泛型类型 实例:
泛型类 :具有一个或者多个类型变量的类就是泛型类
继承关系
子类除了继承父类还可以对父类进行拓展
泛型接口
拥有一个或者多个类型变量的接口
定义类型的边界
泛型方法实际就是带有一个或多个类型参数的方法
…… …… 余下全文
Java泛型
Java泛型是java1.5中引入的新特性,在此之前,java通过对类型Object的引用来实现参数类型的“任意化”,特点则是需要进行显示的强制类型转换。(而这种显示的类型转换可能是无法进行的,是错误的)但编译器无法发现强制类型转换可能引起的异常,异常只有在运行时才能出现,成为了系统的安全隐患。----------------------------为啥要进入泛型这个概念 泛型的本质是参数化类型,及所操作的数据类型被指定为一个参数,此参数类型可以用在类、接口、和方法的声明及创建中,分别被称为泛型类,泛型接口,及泛型方法。 使用注意事项:
泛型的类型参数只能是类类型(包括自定义类),但是不能是简单类型 泛型类型参数可以是多个
泛型的参数类型还可以是通配符类型
没有泛型的错误:
Import java.util.*;
Public class NoGenericTypeDemo{
Public static void main(String[] args)
{
List names=new ArrayList();
Names.add("张桑拿");
…… …… 余下全文
传智播客----------------------------------------------java 基础 许正 Day18总结
1、泛型类:
在写容器之前想要容器中要存什么?所以要先写好泛型
Eg:TreeSet<Person> ts=new TreeSet<Person>();
有了泛型后强制转换就没有用
Eg:public class Person implements Comparator<Person>{}
对于下面覆盖的它的compare方法就不用强制转换了。
Public int compare(Person p){}这里就不用在做强制转换了。
实现代码:
Public static void main(String[] args){
Tool t=new Tool();
t.setObject(new Cat());
t.setObject(new Dog());这时编译会出现没问题,但是运行时会出现错误,因为发生了类型转换异常,dog不能转换成Cat。
Cat c=(Cat)t.getObject();
…… …… 余下全文
C#泛型列表List<T>基本用法总结
示例代码如下:
namespace SampleListT
{
class Program
{
static void Main(string[] args)
{
//using System.Collections.Generic; 命名空间中的List<T>
//using System.Collections; 命名空间中的ArrayList
//都实现了列表集合,一个是泛形集合,一个是非泛型的
//下面我们将Person对象加到集合中
Person p1 = new Person( "aladdin" , 20 );
Person p2 = new Person("zhao", 10);
Person p3 = new Person("jacky", 40);
//如果不制定list的容器大小,默认是0,只要有元素加入是,会自动扩展到4,如果第5个元素加入时,就变成了8,第9个加入,就成16
//可以看出,总是成倍的增长,扩展时要重新开辟内存,这样会影响效率,如果事先知道元素个数,或者可能个数,最好给个尽量大的权衡值
//我们加入3个元素,设容器大小为4.注:设为4不是指只能放4个元素,如果超出,一样也会成倍扩展,这样做只是为了尽量扩展带来的开销
List<Person> list = new List<Person>(4);
list.Add(p1);
list.Add(p2);
list.Add(p3);
//本方法是清除多于的没有用的内存空间,例:如果开辟大小为100,而我们只用了4个,其余的放着,是不是很浪费
//本方法调用时会检查元素个数是不是占到了容器大小的90%以上,如果是,则不进行回收.
list.TrimExcess();
//ArrayList方法与List<>用法一样,不同的是,它是对象集合,参数是Object这样会有装箱拆箱的可能,尽量用List<>
//本处不再做演示
…… …… 余下全文
C/C++编程注意问题总结-模板和泛型编程-结构体注意-中文字符读
取-产生随机数
1.1.1 C++模板和泛型编程总结 ? 函数模板:函数中有不确定的类型T(或成为模板类型)
template<class T1,class T2>
T1 fun(T2 n)
函数模板在调用时自动根据参数的类型判断产生哪种类型的实例。所以程序员必须自己保证在函数中的类型T能够胜任所参与的运算。比如在函数fun()中有T类型的两个数据进行+运算,则程序员必须保证参数能够进行+运算。
? 类模板
类模板:类中有不确定的类型T(或成为模板类型)
template<class T1,class T2>
class Person{}
类中函数在类外部的实现:必须在每个函数上面加一个template<class T>,以及在类后面用<>说明类中用到的模板类型T,如下所示:
template<class T>
Person<T>::int getAge(){}
类模板在实例化时(声明和new一个类模板时),必须用<具体的T>注明类的类型。凡是实例化一个类模板时(即用这种类时),必须要注明具体的类型。如:
…… …… 余下全文