【问题标题】:What is wrong with my constructor in java?我在 java 中的构造函数有什么问题?
【发布时间】:2016-08-31 04:19:32
【问题描述】:

有没有更好的方法(可能..)来构建一个我可以使用 set/get 方法的类。 请注意,所有数据都存储在 ArrayList 中。

public class PorterList
{
    public PorterList()
    {
         ArrayList<Porter> porList = new ArrayList<>(); 
    }
    public PorterList(ArrayList<Porter> p)
    {
         ArrayList<Porter> porList = p;
    }    

    SimpleDateFormat porterDF = new SimpleDateFormat("HH:mm:ss");
    private Porter p = new Porter();
    private int _porterNo;
    public String getStatus(int porterNo)
    {
        _porterNo = porterNo;
        p = porList.get(_porterNo);
        return p.p_state;
    }

倒数第二行有问题 p = porList.get(_porterNo);

我想在我的 main 中使用这样的东西:

p_L = PorterList(p)
porter_status = p_L.get(5)

非常感谢

【问题讨论】:

    标签: java arraylist constructor get


    【解决方案1】:

    Yor ArrayList 是局部变量,这是你的问题。它应该是一个字段。

    private ArrayList<Porter> porList;
    public PorterList() { 
      porList = new ArrayList<>(); 
    } 
    public PorterList(ArrayList<Porter> p
    { 
      porList = p; 
    }
    

    【讨论】:

      【解决方案2】:

      当你声明 ArrayList porList = p;在构造函数内部,它将成为局部变量,因此在该构造函数外部将不可见,如果您希望它在您的类级别使用,请在下面全局声明它

      public class PorterList
      {
          private ArrayList<Porter> porList; 
      
          public PorterList()
          {
      
           porList = new ArrayList<>(); 
      
          }
          public PorterList(ArrayList<Porter> p)
          {
               porList = p;
          }
      
      }
      

      【讨论】:

        【解决方案3】:

        在您的两个构造函数中,您都声明了局部变量 porList - 将其设为字段

        public class PorterList
        {
            private ArrayList<Porter> porList; 
        
            public PorterList()
            {
                 porList = new ArrayList<>(); 
            }
            public PorterList(ArrayList<Porter> p)
            {
                 porList = p;
            }
        ....
        }
        

        【讨论】:

        • 在无参数构造函数中执行 porList = new ArrayList&lt;&gt;(); 并从字段中删除初始化程序,因此您不会在第二个构造函数中浪费 new ArrayList&lt;&gt;()
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多