当前位置: 首页 > 面试题库 >

泛型构造函数在Java中有什么作用?

阴礼骞
2023-03-14
问题内容

众所周知,您可以使用类型参数在Java中创建一个通用类:

class Foo<T> {
    T tee;
    Foo(T tee) {
        this.tee = tee;
    }
}

但是,您也可以使用泛型 构造函数 ,这意味着显式接收其自己的泛型类型参数的构造函数,例如:

class Bar {
    <U> Bar(U you) {
        // Why!?
    }
}

我正在努力了解用例。这个功能让我做什么?


问题答案:

这个功能让我做什么?

它至少可以让您完成 件事,而这 件事是您无法做到的:

  1. 表达参数类型之间的关系,例如:

    class Bar {
    <T> Bar(T object, Class<T> type) {
        // 'type' must represent a class to which 'object' is assignable,
        // albeit not necessarily 'object''s exact class.
        // ...
    }
    

    }

  2. <撤回>

  3. 正如@Lino首先观察到的那样,它使您可以表达参数必须与两个或多个不相关类型的组合兼容(当最多一个是接口类型时,这才有意义)。有关示例,请参见Lino的答案。



 类似资料:
  • 问题内容: 我想创建一个KeyValue类,但以通用方式,这就是我写的内容: 错误显示:“令牌“>上的语法错误”,此令牌后应有标识符” 那我该如何在Java中创建一个通用构造函数呢? 问题答案: 您需要从构造函数的签名中删除:它已经隐式存在。

  • 问题内容: 从文档中学习React 并遇到以下示例: 根据Mozilla的说法,super允许您在构造函数中使用。是否有其他原因可以单独使用(我知道也可以访问父类的方法),但是使用React时,是否还有其他仅通过自身调用的用例? 问题答案: 仅在具有构造函数的React组件内部被调用。例如,以下代码不需要超级: 但是,如果我们有一个构造函数,那么它是强制性的: 之所以不能被允许之前的原因是因为未调

  • 问题内容: 如果我有一个像这样的抽象类: 还有一些从Item派生的类是这样的: 我不明白为什么我不能使用泛型调用构造函数: 我知道可以有一个没有构造函数的类型,但是这种情况是不可能的,因为Pencil具有没有参数的构造函数,而Item是抽象的。但是我从eclipse中得到了这个错误: 无法实例化 我不明白为什么的 T类型 ,以及如何避免这种情况? 问题答案: 无法使用Java类型系统来强制类层次结

  • 问题内容: 这些来自github上的spring amqp示例,位于https://github.com/SpringSource/spring-amqp- samples.git 这些是 什么类型的Java构造函数?它们是吸气剂和吸气剂的捷径吗? 与此相反 问题答案: 这些构造函数被重载以使用调用另一个构造函数。第一个无参数构造函数使用空参数调用第二个。第二呼叫的第三构造(未示出),其必须采取,

  • 本文向大家介绍泛型有什么作用?相关面试题,主要包含被问及泛型有什么作用?时的应答技巧和注意事项,需要的朋友参考一下 泛型有什么作用? 作者:rottenpen

  • 本文向大家介绍React组件的构造函数有什么作用?相关面试题,主要包含被问及React组件的构造函数有什么作用?时的应答技巧和注意事项,需要的朋友参考一下 在react的新的写法中,每一个组件都是一个类,这个很符合es6的语法规范,在es6中要想创建一个对象,就要调用相应的构造函数, react的组件渲染有两种情况,第一种情况是第一次渲染,第二种情况是状态更新时候重新渲染,构造函数在组件的初次渲染