当前位置: 首页 > news >正文

网站设计与制作的过程珠海网站建设 旭洁科技

网站设计与制作的过程,珠海网站建设 旭洁科技,女孩更严重的新冠异常,广州市网站建设制作设计平台方法参数泛型最近#xff0c;有关Java泛型的一个非常有趣的问题发布到Stack Overflow和reddit上。 请考虑以下方法#xff1a; X extends CharSequence X getCharSequence() {return (X) hello; }尽管这种不安全的转换看起来有些古怪#xff0c;并且您… 方法参数泛型 最近有关Java泛型的一个非常有趣的问题发布到Stack Overflow和reddit上。 请考虑以下方法 X extends CharSequence X getCharSequence() {return (X) hello; } 尽管这种不安全的转换看起来有些古怪并且您可能会猜这里有些问题但是您仍然可以继续并在Java 8中编译以下赋值 Integer x getCharSequence(); 这显然是错误的因为Integer是final 因此没有可能也可以实现CharSequence Integer子类型。 但是Java的泛型类型系统并不关心类是否为final final因此在将交集类型转换回Integer之前它会推断X的交集类型Integer CharSequence 。 从编译器的角度来看一切都很好。 在运行时 ClassCastException 尽管上面的内容“显然是可疑的”但真正的问题出在其他地方。 几乎永远不会使方法仅在返回类型上通用 此规则有例外。 这些异常是类似的方法 class Collections {public static T ListT emptyList() { ... } } 此方法没有参数但返回通用ListT 。 无论T的具体推论如何为什么都能保证正确性 由于其语义。 无论您要查找的是一个空的ListString还是一个空的ListInteger 由于是空的并且是不可变的语义尽管擦除都可以为这些T中的任何一个提供相同的实现。 另一个例外是构建器例如javax.persistence.criteria.CriteriaBuilder.Coalesce 它是通过通用的无参数方法创建的 T CoalesceT coalesce(); 生成器方法是最初构造空对象的方法。 空虚是关键。 但是对于大多数其他方法这是不正确的包括上述的getCharSequence()方法。 此方法唯一保证的正确返回值是null 。 X extends CharSequence X getCharSequence() {return null; } …因为在Java中 null是可以分配和强制转换给任何引用类型的值。 但这不是该方法作者的意图。 考虑函数式编程 方法是函数大部分是函数因此预期不会有任何副作用。 无参数函数应始终返回完全相同的返回值。 就像emptyList()一样。 但是实际上这些方法并不是没有参数的。 它们确实具有类型参数T或X extendds CharSequence 。 同样由于泛型类型擦除此参数在Java中“并未真正计数”因为缺乏规范化因此无法从方法/函数内部进行自省。 因此请记住以下几点 几乎永远不会使方法仅在返回类型上通用 最重要的是如果您的用例只是为了避免Java 5之前的版本转换例如 Integer integer (Integer) getCharSequence();是否想在您的代码中找到令人讨厌的方法 我正在使用番石榴来扫描类路径您可能还会使用其他东西。 此代码段将在类路径上生成所有通用的无参数方法 import java.lang.reflect.Method; import java.util.Comparator; import java.util.stream.Stream;import com.google.common.reflect.ClassPath;public class Scanner {public static void main(String[] args) throws Exception {ClassPath.from(Thread.currentThread().getContextClassLoader()).getTopLevelClasses().stream().filter(info - !info.getPackageName().startsWith(slick) !info.getPackageName().startsWith(scala)).flatMap(info - {try {return Stream.of(info.load());}catch (Throwable ignore) {return Stream.empty();}}).flatMap(c - {try {return Stream.of(c.getMethods());}catch (Throwable ignore) {return Stream.Method of();}}).filter(m - m.getTypeParameters().length 0 m.getParameterCount() 0).sorted(Comparator.comparing(Method::toString)).map(Method::toGenericString).forEach(System.out::println);} }翻译自: https://www.javacodegeeks.com/2016/04/parameterless-generic-method-antipattern.html方法参数泛型
http://www.pierceye.com/news/360185/

相关文章:

  • 二手车网站建设代理网页 国外
  • 广州制作网站静态网站首页更新
  • 个人网站用什么服务器宁波网站建设制作哪家好
  • 视频模板网站企业所得税优惠政策2022年
  • 坪山附近公司做网站建设哪家效益快wordpress 置顶 插件
  • 品牌网站建设服务机构内容网站管理系统
  • 电商网站建设基础ppt个人简单网站页
  • 移动端网站模板专业建站工作室
  • 企业网站建设的重要性及意义建设银行忘记密码网站首页
  • 易雅达网站建设公司广告设计公司设计收费标准
  • 行业门户网站php网站开发程序
  • 广州微信网站建设报价表上海注销营业执照流程
  • 陕西省建设执业资格注册中心网站科技有限公司 翻译
  • 做推广都有哪些网站网站怎么上传源码
  • discuz门户网站模板手机电子商务网站规划书范文
  • vps能同时做网站同时做其它事吗wordpress 支持小工具
  • 网站建设制作网络公司wordpress 汽车模板
  • 有哪些做外贸的网站网站快速搭建平台
  • wordpress搜索代码制做优化精灵
  • 连云港做网站推广东莞seo
  • 专业网站设计公司和普通设计公司的区别微信分销网站建设
  • 青海个人旅游网站建设网站建设教程软件下载
  • 做AMC12的题的网站龙华网站建设专业公司
  • 莱州网站制作友情链接交换形式
  • 如何编写网站做美食类网站现状
  • 一站式推广平台做家装模型的效果图网站
  • 企业电子商务网站开发实验报告苏州建筑设计公司排名
  • 网站的优化与网站建设有关吗网站先做移动站在做pc站可行吗
  • 河北网站制作公司电话建设网站的情况说明
  • 高校网站平台建设wordpress小工具不见了