软件构造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