0

我有如下所示的课程;

public class Film {
    public String   filmName;
    public String   filmImage;
    public String   imdbRating;
    public String   description;

    public Film(){
        super();
    }

    public void Film(String filmName,String filmImage,String imdbRating){
        this.filmName=filmName;
        this.filmImage=filmImage;
        this.imdbRating=imdbRating;
    }


    public Film(String filmName,String filmImage,String imdbRating,String description){
        this.description=description;
        //I want call the other one, because I don't want to repeat         
        this.Film(filmName,filmImage,imdbRating);

    }

}

请注意构造函数Film(String,String,String,String)的第二个定义。为什么我不能在第二个构造函数中调用Film(String,String,String) ?

有没有办法做到这一点?

4

5 回答 5

2

应该是这个顺序,那么你只在更通用的版本中实现构造函数。

    public Film(){
        this(null,null,null,null);
    }

    public Film(String filmName,String filmImage,String imdbRating){
        this(filmName,filmImage,imdbRating,null);
    }


    public Film(String filmName,String filmImage,String imdbRating,String description){
        this.filmName=filmName;
        this.filmImage=filmImage;
        this.imdbRating=imdbRating; 
        this.description=description;
    }
于 2013-07-15T02:32:18.593 回答
2

你可以称它为

this(filmName,filmImage,imdbRating)

但它应该首先在构造函数中声明

于 2013-07-15T02:20:20.387 回答
2
  1. public void Film不是构造函数定义,而是方法。消除void
  2. 你可以调用构造函数,this(...)这个调用应该是构造函数的第一行
于 2013-07-15T02:22:07.283 回答
1

this(a, b, c)您可以使用for Strings a、b、c调用其他构造函数。你试图用this.Film不正确的语法来调用它。

于 2013-07-15T02:17:26.577 回答
0

这(电影名称,电影图像,imdbRating)

它应该首先在构造函数中声明

于 2013-07-15T02:53:51.527 回答