java接口作为参数_java-如何强制将通用类型参数作为接口?
我可能不在这里,但是我对泛型的理解有些不同。
如果我错了,我要有人纠正我。
海事组织-
这是一个非常令人困惑的结构。 您具有无限引用的Shape子类,看起来像。
您的Shape接口的使用方式与HashMap相同,但是我从未见过HashMap可以完成您想做的事情,最终您必须让X成为Shape中的类。 否则你在做HashMap
如果您始终希望X成为接口的“ IS A”关系,则不会发生。 那不是泛型的用途。 泛型用于将方法应用于多个对象,并且接口不能是对象。 接口定义了客户端和类之间的契约。 您所能做的就是说您将接受任何实现Runnable的对象,因为使用Runnable接口方法需要全部或某些方法。 否则,如果您未指定并将其定义为,则您的类与客户端之间的合同可能会产生意外的行为,并导致错误的返回值或引发异常。
例如:
public interface Animal {
void eat();
void speak();
}
public interface Dog extends Animal {
void scratch();
void sniff();
}
public interface Cat extends Animal {
void sleep();
void stretch();
}
public GoldenRetriever implements Dog {
public GoldenRetriever() { }
void eat() {
System.out.println("I like my Kibbles!");
}
void speak() {
System.out.println("Rufff!");
}
void scratch() {
System.out.println("I hate this collar.");
}
void sniff() {
System.out.println("Ummmm?");
}
}
public Tiger implements Cat {
public Tiger() { }
void eat() {
System.out.println("This meat is tasty.");
}
void speak() {
System.out.println("Roar!");
}
void sleep() {
System.out.println("Yawn.");
}
void stretch() {
System.out.println("Mmmmmm.");
}
}
现在,如果您上过此类,您可以期望您可以始终调用“ speak()”和“ sniff()”
public class Kingdom {
public Kingdom(X dog) {
dog.toString();
dog.speak();
dog.sniff();
}
}
但是,如果执行此操作,则永远无法调用“ speak()”和“ sniff()”
public class Kingdom {
public Kingdom(X object) {
object.toString();
object.speak();
object.sniff();
}
}
结论:
泛型使您能够对各种对象(而不是接口)使用方法。 您最后进入通用类必须是一种对象。
java接口作为参数_java-如何强制将通用类型参数作为接口?相关推荐
- java接口作为参数_JAVA:将类、抽象类、接口当成方法的参数传入
将类当成参数传入方法,其实就是将类的对象传入方法,如果是抽象类,其实就是将抽象类的子类的对象传入方法,如果是接口,其实就是将接口实现类的对象传入方法. 因为抽象类和接口是不能实例化成对象的,所以必须找 ...
- java 接口 this参数_Java BiFunction 接口实例
原标题:Java BiFunction 接口实例 www.baeldung.com/java-bifunction-interface 1. 简介 Java8 引入了函数式编程,可以把函数作为参数传入 ...
- java -jar 默认参数_JAVA入门学习指南,建议收藏
如果你不懂Java 并且想认真学习接触了解一下Java的语法,建议把这篇文章收藏了,多看几遍,应该可以初步掌握Java 大部分基础的语法 . 让我们出发吧!ps:本文有点长,耐心阅读 . 〇,编程环境 ...
- java变长参数_Java可变长度参数
术语"varargs"是"variable-length arguments"(可变长度参数)的缩写. 可变长度参数声明一个接受可变数量的参数(或参数)的方法或 ...
- linux下java命令行参数_Java调用Linux命令行
Java调用Linux命令行 Java语言以其跨平台性和简易性而著称,在Java里面的lang包里(java.lang.Runtime)提供了一个允许Java程序与该程序所运行的环境交互的接口,这就是 ...
- java 获取接口的注解_java反射注解妙用-获取所有接口说明
前言 最近在做项目权限,使用shiro实现restful接口权限管理,对整个项目都进行了重构.而权限管理需要用到所有的接口配置,包括接口url地址,接口唯一编码等.想要收集所有的接口信息,如果工程接口 ...
- java 命令行参数 _java命令行参数
原标题:java命令行参数 命令行参数就是main方法里面的参数String[] args他就是一个数组,args只是数据类型的一个名称,就是一个数组的变量,名称无所谓,类型没变就行了.这个就是程序的 ...
- java方法可选参数_Java可选参数
java方法可选参数 在Java类中设计方法时,某些参数对于其执行而言可能是可选的. 无论是在DTO,胖模型域对象还是简单的无状态服务类中,可选方法参数都是常见的. 从本文中, 您将学习如何在Java ...
- java 什么是参数_java中的参数是什么?
本篇文章介绍了Java中什么是参数,以及参数的两种类型及他们之间的关系,希望对学习Java开发的同学有帮助. java中的参数是什么? 参数分两种:一种叫形式参数,一种叫实际参数 方法名后面括号里面用 ...
最新文章
- android 分组 listview,Android实现的ListView分组布局改进示例
- .pth is a zip archive (did you mean to use torch.jit.load()?)
- Modelsim command line 传参数到 .do 文件
- WPFの操作文件浏览框几种方式
- Windows环境中jdk的下载、安装与配置
- maven 搭建私有仓库
- 问题记录 | 记录PIL中Image.save的一个坑
- 小众却非常好用的文件同步备份工具-FileYee
- Python3.7安装numpy与scipy库(win10)
- 分布式电源选址定容与优化配置MATLAB程序基于多目标粒子群算法
- 2021年的放假安排正式官宣!五一连休5天哦!
- C/C++程序固定单核CPU运行(几个示例)
- Prege(图计算框架)
- java交换kv的值_以.kv语言描述OSC
- 符合lft, rgt的无限分类算法的Java生成代码
- anaconda安装配置步骤、报错解决
- 神经网络实现手写数字识别(MNIST)
- linux下登录ftp
- 由于没有公钥,无法验证下列签名:一步解决
- input/print,pycharm设置文件抬头
热门文章
- TCP半连接队列(syns queue)和全连接队列(accept queue)
- Memory Translation and Segmentation(内存转换与段)
- 为什么你的发行版仍然在使用“过时的”Linux 内核? | Linux 中国
- LaTex在Linux下编写高质量的文档
- Python基础学习总结、学习展望
- toad软件 insert批量操作_AE创建、PR制作,动态字幕跨软件也能批量操作
- arraylist、map、queue、stack总结
- oracle big table1,关于Big_Table脚本的一些有关问题
- access中dbs和dbms_DB、DBS、DBMS之间有什么关系?
- python回归结果可视化图表解读_一个基于可视化理论的完美Python图表,快学起来