我有一个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文件被称为什么?
答案 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>();