「java通配」java通配符
今天给各位分享java通配的知识,其中也会对java通配符进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java泛型通配符的问题
- 2、Java中什么是通配符?
- 3、java类通配参数
- 4、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通配的信息别忘了在本站进行查找喔。