「java泛型代码」java泛型实现

博主:adminadmin 2022-11-22 20:49:06 79

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

本文目录一览:

泛型和数组以及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泛型一个代码疑问?

这个我用intellj运行的时候报错了,按道理来说应该是报错的才对。以下可能性是我猜的:

你generic了一个T,告诉Java这个class可以给任何形式的variable用,然后你声明了object stu里面的T是一个string,但是输入1 。所以Java就吧1换算成二进制以后把它强行改为object String再输入进去,因为你没有实际调用这个T,所以Java就假设这个东西是没毛病的。

java泛型问题代码如下:

//是这样吗?

public class FTestDraw {

public static void main(String[] args) {

DrawMethodShape dm = new DrawMethodShape(new Circle());

dm.shape.draw();

}

}

abstract class Shape{

abstract void draw();

}

class Circle extends Shape{

@Override

void draw() {

System.out.println("这是圆形");

}

}

class Rectangle extends Shape{

@Override

void draw(){

System.out.println("这是长方形");

}

}

class Triangle extends Shape{

@Override

void draw(){

System.out.println("这是三角形");

}

}

class DrawMethodT extends Shape{

T shape = null;

public DrawMethod(T tt){

shape = tt;

}

}

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

The End

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