【问题标题】:override tostring of anonymous class覆盖匿名类的tostring
【发布时间】:2012-09-15 12:01:18
【问题描述】:

我想覆盖列表中每部电影的标题。
我试图将x 设为静态和最终,但编译器抱怨。

List<Movie> mList = new ArrayList<Movie>();

for(int i = 0; i < 5; i++)
{
int x;
mList.add(new Movie(){


  toString(){

   // need an easy way to give a unique string to each movie here.
   return "Movie" + x;
  } 
}
}

【问题讨论】:

    标签: java static tostring inner-classes final


    【解决方案1】:

    这应该可行:

    List<Movie> mList = new ArrayList<Movie>();
    
    for (int i = 0 ; i < 5 ; i++) {
        final int x = i;  // or anything else, but you must assign it some value
        mList.add(new Movie() {
            @Override
            public String toString(){
                return "Movie" + x;
            } 
        });
    }
    

    您不能创建x static - @987654321@ 修饰符仅用于类的数据字段(或方法)。而且x必须确实是final,这样匿名类的toString方法才能访问它。

    【讨论】:

    • 你能解释一下提问者做错了什么吗?我觉得这会使这个答案更完整。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2020-10-21
    • 1970-01-01
    相关资源
    最近更新 更多