列出非公开课

时间:2015-06-11 06:25:24

标签: java

我有一个java文件,其中我有两个类,其中一个是公共的,另一个是默认的 -

import java.util.List;

public class TaskAnswers {


    private float ratings;
    private List<Image> imageList;

    public float getRatings() {
        return ratings;
    }

    public void setRatings(float ratings) {
        this.ratings = ratings;
    }


    public List<Image> getImageList() {
        return imageList;
    }

    public void setImageList(List<Image> imageList) {
        this.imageList = imageList;
    }

}

class Image {
    private String image;
    private String caption;

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }

    public String getCaption() {
        return caption;
    }

    public void setCaption(String caption) {
        this.caption = caption;
    }

}

我想在另一个类中创建一个list Image类类型。当我们这样编写时,那个java文件被称为什么?

3 个答案:

答案 0 :(得分:2)

Java每个源文件只允许一个公共类。尝试将Image类公开,您将遇到编译器错误。您需要调用文件TaskAnswers.java,因为要求源文件的名称与该文件中包含的 public 类的名称相匹配。

用户@NwDx提到Image类是受保护的,这意味着您只能从共享同一个包的其他Java类中实例化它。如果您需要在单独的包中访问Image类,那么将它移动到自己的public类文件中而不是将其作为内部类是更好的设计选择。

您在原始问题中发布的代码示例看起来很不错。

答案 1 :(得分:1)

如果你需要其他包中的类Image,你必须公开它,但在这种情况下你需要将它移动到TaskAnswers的内部类或创建一个自己的类(文件)。

public class TaskAnswers {


    private float ratings;
    private List<Image> imageList;

    public float getRatings() {
        return ratings;
    }

    public void setRatings(float ratings) {
        this.ratings = ratings;
    }


    public List<Image> getImageList() {
        return imageList;
    }

    public void setImageList(List<Image> imageList) {
        this.imageList = imageList;
    }



    public static class Image {
        private String image;
        private String caption;

        public String getImage() {
            return image;
        }

        public void setImage(String image) {
            this.image = image;
        }

        public String getCaption() {
            return caption;
        }

        public void setCaption(String caption) {
            this.caption = caption;
        }

     }
}

有关详细信息,请查看Java Nested Classes Tutorial

答案 2 :(得分:0)

图像类称为utility class,而TaskAnswers称为functionality implementation class,您可以按照以下方式使用它,并使用high cohesion

的概念
List<Image> list = new ArrayList<Image>();