「类的泛化java如何实现」java中的泛化

博主:adminadmin 2022-11-26 10:39:09 52

本篇文章给大家谈谈类的泛化java如何实现,以及java中的泛化对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java中关于使用泛化a类的集合来存放a的子类b和c,怎样才能实现?

放进去的时候可以用?、? extend A、Object来声明容器内对象类型,取出来的时候如果要调用子类方法,要转型才能使用。

List? extend A list = new ArrayList();

list.add(new B());

list.add(new C());

B b = (B)list.get(0);

C c = (C)list.get(1);

java泛化与泛型区别

面对对象编程,泛化表示继承关系或者实现关系 .比如A类 继承  B类,A接口继承B接口 A类实现B接口都叫泛化.

泛型是JDK1.5以后出现的新JAVA编程模式 可以对集合类或者其他类指定类型比如

ArrayListIntegerlist=new ArrayListInteger();

这样list就只能包含Integer数据  而且泛型的应用也不止容器~ 这里只是举例

java中泛化是什么意思啊

在面对对象编程中,泛化表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。

代码例子:

父类 父类实例=new 子类()

建议楼主到这个网站/论坛学习~~

谢谢

泛型和数组以及Java是如何实现泛型的

要区分数组和泛型容器的功能,这里先要理解三个概念:协变性(covariance)、逆变性(contravariance)和无关性(invariant)。

若类A是类B的子类,则记作A ≦ B。设有变换f(),若:

当A ≦ B时,有f(A)≦ f(B),则称变换f()具有协变性;

当A ≦ B时,有f(B)≦ f(A),则称变换f()具有逆变性;

如果以上两者皆不成立,则称变换f()具有无关性。

在Java中,数组具有协变性,而泛型具有无关性,示例代码如下:

Object[] array = new String[10];

//编译错误

ArrayListObject list=new ArrayListString();

这两句代码,数组正常编译通过,而泛型抛出了编译期错误,应用之前提出的概念对代码进行分析,可知:

1、String ≦ Object

2、数组的变换可以表达为f(A)=A[],通过之前的示例,可以得出下推论:

f(String) = String[] 以及 f(Object) = Object[];

4、通过代码验证,String[] ≦ Object[] 是成立的,由此可见,数组具有协变性。

如何定义,使用Java泛化函数

一是,记住声明的格式

二是,理解这个格式所表达的意思

ListString list = new ArrayListString();

这个就是格式,

意思是:新建一个List,这个List里面放的全部是String

要表示这样一个语法,就是在List后面加尖括号,尖括号里面写存放东西的类型

主要就是尖括号,尖括号里面填一个类型,表示这个数据结构里面放的全部是这种类型的东西,别的类型放步进去,同样的,取出来也全不是这种类型,不可能是其他类型。

就是这么个理解思路。

另外,还可以从使用泛型的好处, 以及 如何定义泛型类 去更深的理解

JAVA泛化及为什么需要泛化

泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。

比如,有一种类型为List,此时该List可以是任意类型的列表,如Integer,String等等。

如果把List类型改为ListInteger,则此时只表示整型的列表。

这就是所谓的将操作的数据类型指定为一个参数

那么这么做有什么好处呢?

比如原来我们有如下的程序:

List myIntList = new LinkedList();// 1

myIntList.add(new Integer(0));// 2

Integer x = (Integer) myIntList.iterator().next();// 3

在第三行中进行了强制类型转换。这个类型转换不仅仅带来了混乱,它还可能产生一个运行时错误(run time error),因为程序员可能会犯错。

程序员如何才能明确表示他们的意图,把一个list中的内容限制为一个特定的数据类型呢?这是generics背后的核心思想。这是上面程序片断的一个泛型版本:

ListInteger myIntList = new LinkedListInteger(); // 1

myIntList.add(new Integer(0)); // 2

Integer x = myIntList.iterator().next(); // 3

注意变量myIntList的类型声明。它指定这不是一个任意的List,而是一个Integer的List,写作:ListInteger。我们说List是一个带一个类型参数的泛型接口(a generic interface that takes a type parameter),本例中,类型参数是Integer。我们在创建这个List对象的时候也指定了一个类型参数。

另一个需要注意的是第3行没了类型转换。

关于类的泛化java如何实现和java中的泛化的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-26,除非注明,否则均为首码项目网原创文章,转载请注明出处。