「java通配」java通配符

博主:adminadmin 2023-01-17 19:39:07 315

今天给各位分享java通配的知识,其中也会对java通配符进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java泛型通配符的问题

首先? super B表示的是B或者B的父类。

你的List? super B list = new ArrayList();这句赋值出现了警告是因为你将一个原生的ArraylList引用传递给有限制的List,改成这样List? super B list = new ArrayListA();警告就消失了

那么为什么不能在其中放入A的实例呢,因为你将ArrayListA转型为ArrayList? super B,编译器会认为这个list中存放的是某一个B类的父类的实例,但不能确定是A,所以你传入A会出错,但是你传入B或C的实例呢,起码可以保证它是一个B,那就肯定没错了。

Java中什么是通配符?

java中的通配符由?表示,应用场景是在方法的形参上使用,为了弥补泛型机制带来的参数传递问题,主要有三种通配符分类 无界通配:?,子类限定:? extends Object,父类限定:? super Integer。

java类通配参数

解决思路,

如果A类和B类,没有相互的继承关于,  那么参数用Object 类型(Object是所有类的父类).

当传入参数后在判断传入的类型,然后进行相应的处理

具体的代码如下

class A{

void print(){

System.out.println("我是A类的print方法");

}

}

class B{

void print(){

System.out.println("我是B类的print方法");

}

}

public class Test {

public static void main(String[] args) {

printInfo(new A());

printInfo(new B());

}

public static void printInfo(Object o){

if(o.getClass() == A.class){

A a = (A) o;

a.print();

}else if(o.getClass()==B.class){

B b = (B) o;

b.print();

}

}

}

当如果A类和B类存在继承关于,那么参数就是父类的类型就可以了

class People{

void say(){

System.out.println("人们说:友好相处,美丽世界");

}

}

class Student extends People{

void say(){

System.out.println("学生说: 好好学习天天向上");

}

void readbook(String bookname){

System.out.println("学生: 我正在看"+bookname);

}

}

public class Test2 {

public static void main(String[] args) {

sayInfo(new People());

sayInfo(new Student());

}

public static void sayInfo(People p ){

p.say();//如果调用的父类和子类都有的方法,直接写就可以了

if(p.getClass()==Student.class){//如果想调用子类特有的方法,就需要判断是不是子类

Student s = (Student) p;//强制转换

s.readbook("三国演义");//调用子类特有的方法

}

}

}

方案三  泛型

class T1{

}

class T2{

}

public class Test3 {

public static void main(String[] args) {

show(new T1());

show(new T2());

}

public static Tvoid show(T t){

System.out.println(t.getClass().getName());

}

}

选择一个,你喜欢或者合适使用的

java通配符类型

如果是类引入的通配符,那么指的是”*“,

如:import java.util.*;表示的是引入util包下的所有类;

如果是查找的通配符,那么指的是”*“,

如:*.java;表示的是查找后缀为java的所有文件;

如果是泛型中的通配符,那么指的是”T“;

如:ListT list = new ArayListT();表示定义了一个通配的list对象,可以代表任何对象的list。

java通配的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java通配符、java通配的信息别忘了在本站进行查找喔。