其他分享
首页 > 其他分享> > 软件构造Lab2心得

软件构造Lab2心得

作者:互联网

泛型

泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。

泛型的本质是参数化类型,即给类型指定一个参数,然后在使用时再指定此参数具体的值,那样这个类型就可以在使用时决定了。这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。

泛型的具体例子例如我们列表的具体实现:
ArrayList<String> example = new ArrayList<>();

而我们更可以在多个层面利用泛型

泛型接口

定义格式:
修饰符 interface接口名<代表泛型的变量> { }

public interface Graph<L>{
	public boolean add(L vertex){}
	
	public boolean remove(L vertex){}
	
	public int set(L source, L target, int weight){}
}

使用泛型接口也分为两种情况:

定义类时就确定泛型类型
public class myGraph implements Graph<String>{
	/*	具体实现省略	*/
	@Override
	public boolean add(String vertex){}
	@Override
	public boolean remove(String vertex){}
	@Override
	public int set(String source, String target, int weight){}
}
直到创建对象时确定泛型类型
public class myGraph<L> implements Graph<L>{
	/*	具体实现省略	*/
	@Override
	public boolean add(L vertex){}
	@Override
	public boolean remove(L vertex){}
	@Override
	public int set(L source, L target, L weight){}
}
	/*	创建对象	    */
public static void main(String[] args) {
	myGraph<String> mg = new myGraph<>();
}

泛型类

泛型类型用于类的定义中,被称为泛型类。通过泛型可以完成对一组类的操作对外开放相同的接口。最典型的就是各种集合框架容器类,如:List、Set、Map。

定义格式:
修饰符 class类名<代表泛型的变量> { }

使用实例:

public class myGraph<L>{
	public boolean add(L vertex){}
}

当泛型用于定义类时,确定泛型类型只有在创建对象的时候,如

myGraph<Integer> mg = myGraph<>();

泛型方法

定义格式:
修饰符 <代表泛型的变量> 返回值类型 方法名(参数){ }

泛型方法,是在调用方法的时候指明泛型的具体类型。

泛型方法:

public class myGraph<L>{
	public <T> boolean add(T vertex){}
}

确定泛型类型:

public static void main(String[] args) {
	myGraph<String> mg = myGraph<>();
	mg.add("username");	//	确定泛型为字符串
	mg.add(521);	//	确定泛型为整数
}

可见泛型方法随着我们传入参数不同,它的操作也变得不同

还有一部分是这里关于类型通配符的知识,由于时间有限,不作解释(其实我也还没学···)

总结

从上面我们能够看出,泛型的应用非常广泛,带给我们的好处也很多,可以避免强制类型转换的麻烦,可以对于一个接口或者类又或者方法而言,可以面向很多的类型,减少工作量,它也一定程度上保证了安全性,在编译阶段就能实现为我们找到这类错误,而不是运行时才报错。

标签:myGraph,vertex,Lab2,boolean,类型,泛型,软件,心得,public
来源: https://www.cnblogs.com/clrain/p/16336236.html