当前位置: 首页 > 知识库问答 >
问题:

在Java中制作类型参数时,为什么在某些情况下我不能使用构造函数呢?

薛枫
2023-03-14
public class nonArrayVersion<T> {
    private T value;        

    public void assignValue(T passedValue) {
        this.value = passedValue;
    }
//other methods
}
public class arrayVersion<T> {
    private ArrayList<T> values;

    public arrayVersion() {
        this.values = new ArrayList<>();
    }
//other methods
}
public nonArrayVersion(T element) {
        this.element = element;
    }

或者从arrayVersion类中删除等效的构造函数,我将无法运行我的程序。但是我不明白为什么。我认为我应该能够在这两种情况下使用构造函数,因为每个类都被实例化,并且应该在类中分配一个值。

共有1个答案

陆琦
2023-03-14

在分配类型化构造函数时,必须调用类对象,如

onArrayVersion<String> str = new nonArrayVersion<String>("Some Text");

您的应用程序没有运行,因为当您添加类型化构造函数时,您需要显式定义一个默认构造函数。所以

nonArrayVersion str=new nonArrayVersion<>(); 将引发错误。

 类似资料:
  • 我正试图用BlueJ完成一项为uni完成的任务,但我在第一个障碍上遇到了障碍。 在赋值中,我们得到了一个类,以及该类的构造函数、方法和参数的名称。我们不允许更改这些,因为赋值部分地由测试单元标记(或类似的东西)。 该类的一个构造函数如下所示 我已经(部分)完成了 我不明白的是为什么-为什么他们使用作为构造函数的参数?这样做有什么好处? (我想这样做肯定有好处(如果没有,功能就不会存在),但我不明白

  • 我在做一个非常简单的两个按钮状态。如果我点击abutton,A组件显示,如果点击bButk,那么B组件。我正在映射通过数组的项目,以便每个项目都有自己的按钮状态。假设我点击项目1的按钮B,那么我只想要第一个项目B显示。现在所有这些都会同时被触发。我已经在构造函数中限制了它们,但我仍然无法只获得一次点击触发并显示相关组件。

  • 问题内容: 为什么 工作,但是 不是吗 问题答案: 为了理解这一点,让我们考虑一下编译器在两种可能性下每个步骤所做的事情。让我们开始: 编译器将‘4’转换为int。所以变成 然后编译器变成 ch是一个字符,编译器可以将54转换为字符,因为它可以证明转换没有损失。 现在让我们考虑第二个版本: ch在编译时没有已知值。因此,这成为 现在,编译器无法证明此(int)的结果在char范围内可存储。因此它

  • 问题内容: 众所周知,您可以使用类型参数在Java中创建一个通用类: 但是,您也可以使用泛型 构造函数 ,这意味着显式接收其自己的泛型类型参数的构造函数,例如: 我正在努力了解用例。这个功能让我做什么? 问题答案: 这个功能让我做什么? 它至少可以让您完成 三 件事,而这 三 件事是您无法做到的: 表达参数类型之间的关系,例如: } <撤回> 正如@Lino首先观察到的那样,它使您可以表达参数必须

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

  • 问题内容: 为什么不能和这两个一起在构造函数中使用? 合并这样的东西的原因是什么? 问题答案: 将在同一类中调用另一个构造函数,而将调用超级构造函数。如果构造函数中没有,则编译器将隐式添加一个。 因此,如果两者都允许,您最终可能会两次调用构造函数。 示例(不要在参数中寻找含义): 现在,如果调用,将调用以下构造函数: 更新 : 如果您能够使用并且可能会得到如下结果: ( 注意 :这是为了说明 如果