【问题标题】:Appending a specific object in an arraylist using java?使用java在arraylist中附加特定对象?
【发布时间】:2015-07-16 14:26:42
【问题描述】:

我试图做的是让用户输入他们想要附加的“记录”索引。索引将用于查看数组列表中的特定对象。存储在该对象中的所有内容都将写入输入 from。然后,用户将能够附加他们的输入并将其写回同一个对象。我坚持的是从对象中获取数据并将其添加到表单控件中。我正在使用

Movie genreOfMovie = (Movie) movieList.get(Integer.parseInt(index) - 1);

但这给了我不是我想要的字符串的对象实例。

有人告诉我要使用

 @Override
    public String toString() {

        return genreOfMovie;
    }

它有效,但仅适用于名副其实的,有没有办法使它适用于所选对象中的所有变量?

【问题讨论】:

    标签: java object arraylist instance


    【解决方案1】:

    如果您有一个文本字段(例如电影的标题),我建议您将 setTitle(String newTitle)getTitle() 添加到您的 Movie 类中。

    有了这个,你就可以做

    textField.setText(selectedMovie.getTitle());
    

    并且,当用户点击保存时,

    selectedMovie.setTitle(textField.getText());
    

    如果你有更多的属性(流派、导演……)我建议你添加更多的 get-/set-methods。


    除非该类具有非常明显的字符串表示,否则toString 应该只是used in debugging purposes

    【讨论】:

    • toString 方法返回一个“以文本形式表示”对象的字符串。建议它仅用于调试目的是不正确的。
    • 我怀疑处理电影的程序是否应该向用户显示一个“以文本形式表示”电影的字符串。 IE。 Movie[Title: Star Wars, Director: George Lucas, Internal flag: true] 不属于用户界面。除了极少数例外,用户界面应该只定义明确定义的字符串,例如"Title: " + m.getTitle() + ", director: " + m.getDirector()。 (有关详细信息,请参阅我提供的链接。)
    • 我应该澄清我的言论。一个设计合理的类应该覆盖 toString。我会承认,当存在更好的方法时,不应随意使用它,但是在错误消息等情况下,使用 toString 是完全有效的,即使在调试之外
    • 我会说这取决于错误消息。如果存在用户错误,那么我仍然会反对使用 toString(请参阅我之前的评论)。如果是程序错误,那很好,但最后这个消息仍然是为了帮助调试!
    • 正如我所说,不要随意使用,但可以用于记录和向用户报告错误消息等事情。我的主要观点是重写 toString 是很好的类设计
    【解决方案2】:

    如果你想要 to get all variables data 来自 Movie 对象,

    任何一个

    Movie 对象中包含一个方法,appends the variables data 以所需的格式提供并作为String 输出。

    编写您自己的方法,该方法将Movie 对象作为输入,并调用像getTitle()+getGenreOfMovie+getLength() 这样的必填字段getter 方法并返回一个String 对象。

    重要的是检查这些变量中的 Null 或 Empty 数据。

    【讨论】:

      【解决方案3】:
      import java.util.ArrayList;
      import java.util.List;
      
      public class MovieTest {
      
          public static void main(String[] args) {
      
              List<Movie> movies = new ArrayList<Movie>();
      
              movies.add(new Movie("A"));
              movies.add(new Movie("B"));
              movies.add(new Movie("C"));
      
      
              Movie movie = movies.get(1);
              System.out.println(movie);
              movie.setDirector("Director for B");
              movie = movies.get(1);
              System.out.println(movie);
      
          }
      }
      
      class Movie {   
          String title;
          String director;
          int length;
      
          Movie(String title) {
              this.title = title;
          }
      
          public String getTitle() { return title; }
          public String getDirector() { return director; }
          public int getLength() { return length; }
      
          public void setTitle(String title) { this.title=title; }
          public void setDirector(String director) { this.director = director; }
          public void setLength(int length) { this.length = length; }
      
          public String toString() {
              return "[" + title + "]["+ director +"][" + length + "]";
          }
      }
      

      【讨论】:

      • 按照其他人的建议,为您需要获取和设置的特定类成员使用适当的setter和getter
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-12
      • 2012-11-23
      • 2015-04-17
      • 2021-11-11
      • 2019-07-11
      • 2013-10-29
      相关资源
      最近更新 更多