是否有一种语法或解决方法来将泛型类型参数限制为任何一种类型的类型?

我知道您可以将类型限制为所有类型的所有类型(即AND逻辑):

public class MyClass & Serializable> { } // legal syntax

有OR逻辑版本,就是这样的:

public class MyClass | Serializable> { } // illegal syntax

如果没有支持这个的语法(我不认为有),是否有一个很好的模式的解决方法或方法?

对于某些上下文,一个用例可能是:

/** @return true if the obj is either has the same id,or if obj is the same as id */

public boolean sameAs(T obj) {

if (obj instanceof String) return this.id.equals(obj);

if (obj instanceof MyClass) return this.id.equals(((MyClass)obj).id);

return false;

}

人们似乎正在挂上上面我方法示例的准确语义.我们来试试看吧

public class MyWrapper {

// my class can wrap A or B (unrelated classes). Yes I will probably use instanceof

}

编辑:

在编译时我不会知道我可能得到(来自外部代码),所以我想避免每个类型都有具体的类.此外,我必须给我的课程一个调用我的class.method的外部系统,但另一个系统可以给我各种类的实例,而是一个狭义的和已知的品种.

有人对“不纯”的例子发表了评论.那么一个解决方法是使用工厂方法根据传入对象的类来选择我的具体类,但是该工厂方法必须使用instanceof,所以你只是将instanceof移动到另一个地方 – 你仍然需要的instanceof.

还是这个想法不是一个好主意?

java参数传入泛型类型_Java泛型参数界定到任何一个类型的范围相关推荐

  1. java参数传入泛型类型_Java 泛型(参数化类型)

    Java 泛型 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型. 泛型的本质是参数化类型,也就是说所 ...

  2. java参数传入泛型类型_Java 5.0 泛型之 使用泛型统一传入的参数类型

    Java 5.0 泛型之 使用泛型统一传入的参数类型 package Demo; // 使用泛型统一传入的参数类型 class Info28 { private T var; // 此类型由外部决定 ...

  3. java参数传入泛型类型_java泛型方法参数传递

    Java参数,不管是原始类型还是引用类型,传递的都是副本(有另外一种说法是传值,但是说传副本更好理解吧,传值通常是相对传址而言). 如果参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这 ...

  4. JAVA一种获得泛型类泛型参数Class对象的方法

    我在最近的开发中遇到这样一种情形,就是有一个类需要使用泛型进行实现,但是又同时需要用到泛型的Class对象.然而由于Java泛型擦除没办法直接得到泛型参数的Class对象.本已打算放弃,但是在编写其它 ...

  5. java 三个点_Java,参数中的3个点

    是瓦拉格斯 :) varargs是可变长度参数的缩写,它允许方法接受可变数量的参数(0或更多).使用varargs,创建需要使用可变数量参数的方法变得非常简单.在Java 5中添加了变量参数的特性. ...

  6. java 接口的泛型方法_Java泛型/泛型方法/通配符/泛型接口/泛型泛型擦出

    从JDK1.5以后引入了三大常用新特性:泛型.枚举(enum).注解(Annotation).其中JDK1.5中泛型是一件非常重要的实现技术,它可以帮助我们解决程序的参数转换问题.本文为大家详细介绍一 ...

  7. java泛型类的构造函数_Java泛型构造函数

    推荐关注公众号:锅外的大佬 每日推送国外优秀的技术翻译文章,励志帮助国内的开发者更好地成长! 1.概述 我们之前讨论过Java Generics的基础知识.在本文中,我们将了解Java中的通用构造函数 ...

  8. java 和mysql 时间_java和mysql之间的时间日期类型传递

    mysql(版本:5.1.50)的时间日期类型如下: datetime 8bytes xxxx-xx-xx xx:xx:xx 1000-01-01 00:00:00到9999-12-31 23:59: ...

  9. java jdbc 传参_java – 将参数传递给JDBC PreparedStatement

    我正在尝试为我的程序制作验证课程.我已经建立了与 MySQL数据库的连接,我已经在表中插入了行.该表由firstName,lastName和userID字段组成.现在我想通过构造函数的参数在数据库中选 ...

最新文章

  1. 例题6-6 小球下落(Dropping Balls, UVa 679)
  2. RDO Packstack 安装 Openstack Icehouse CentOS 6.5 单网卡
  3. 字符串,枚举,数值之间的转换
  4. 运行startup.bat的启动过程
  5. [超享]linux共享3160命令
  6. linux 虚拟机挂载本地,CentOS 在VMWare中挂载本地yum源
  7. php json 美化,php JSON数据格式化(美化)的方法
  8. 校园兼职跑腿源码+网页版(非小程序)
  9. Pycharm -- RuntimeWarning: Parent module '...' not found while handling absolute import
  10. MySql 5.7.2搭建主从(master/slave)复制
  11. linux下怎么卸载mysql数据库_linux 怎么完全卸载mysql数据库
  12. java中数字循环嵌套举例,在Java程序中,复杂算法可以通过循环语句和的相互嵌套来实现。...
  13. 全国所有机场 sql表 (截至2021.1.25)绝对最全!!
  14. android 汉字 转 拼音首字母大写,传入汉字字符串, 返回大写拼音首字母
  15. RFT和QTP与AutoIt
  16. java sockets_Java Sockets
  17. 520,期待了不起的对象
  18. [内网渗透]—GPO批量控制域内主机
  19. ROS示例----TIAGo教程
  20. Sarcasm Detection with Self-matching Networks and Low-rank Bilinear Pooling

热门文章

  1. 卡诺模板_无关条件的卡诺地图
  2. js时间格式化通用方法
  3. 使用onclick跳转到其他页面/跳转到指定url
  4. [深入学习C#]匿名函数、委托和Lambda表达式
  5. GPCC安装以及踩坑经历
  6. 转学到斯坦福大学计算机专业,斯坦福大学转学申请条件有哪些?
  7. c语言课程设计大作业模版,c语言课程设计报告模板下载
  8. python expect模块_Python尚学堂高淇|第二季0408P119P123with上常见的异常的解决tryexcept...else结构,...
  9. 福大计算机课程表,教学文件 - 福州大学电气工程与自动化学院
  10. win7系统5分钟就会自动注销的解决教程