【问题标题】:The assignment to variable [Something] has no effect [closed]分配给变量 [Something] 没有效果 [关闭]
【发布时间】:2015-08-22 17:00:10
【问题描述】:

我收到此警告,这是什么意思?

对变量名的赋值无效。

我也对所有 3 个字段都收到相同的错误。完整代码如下:

public class Module {

    private String name;
    private int bind;
    private Category category;

    public Module(String name,int bind,Category category) {
    }{
        this.name = name; // The assignment to variable name has no effect
        this.bind = bind;
        this.category = category;
    }

【问题讨论】:

    标签: java variable-assignment


    【解决方案1】:

    这是你的问题,额外的大括号:

    public Module(String name,int bind,Category category) {
    }{ // <<<
        this.name = name;
        this.bind = bind;
        this.category = category;
    }
    

    应该是:

    public Module(String name,int bind,Category category)
    {
        this.name = name;
        this.bind = bind;
        this.category = category;
    }
    

    【讨论】:

      【解决方案2】:
      public Module(String name,int bind,Category category) {
      }{
      

      有一对额外的大括号,因此您的代码实际上不在构造函数中。

      您的代码将在构造函数之前以"instance initialization block" 的形式运行,因此,这些命名指的是您的类的实例,而不是构造函数的参数。

      【讨论】:

      • 以后,请作为错别字投票。
      【解决方案3】:

      只是为了完成给出的答案。

      您拥有的代码完全有效。实际上,您创建了一个不分配任何变量的构造函数:

      public Module(String name,int bind,Category category) {
      }
      

      您在下面创建了一个initializer code block,每个构造函数都会调用它:

      {
       this.name = name;
       this.bind = bind;
       this.category = category;
      }
      

      这个块有效地将每个局部变量分配给它自己,这会导致编译器警告你。

      【讨论】:

        猜你喜欢
        • 2020-01-10
        • 1970-01-01
        • 2012-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-28
        相关资源
        最近更新 更多