java访问公共类方法而不创建对象
我是java初学者,我有一个Drink类,其中有一个showAll()方法来打印存储在私有哈希集中的所有Drink对象。在我的主要功能中,我可以通过以下方式访问此方法java访问公共类方法而不创建对象,java,Java,我是java初学者,我有一个Drink类,其中有一个showAll()方法来打印存储在私有哈希集中的所有Drink对象。在我的主要功能中,我可以通过以下方式访问此方法 Drink test = new Drink(value1 , value2 , ....); test.showAll(); 有没有一种方法可以在不创建对象的情况下访问showAll()方法,因为我只想打印所有数组对象,而无需每次打印时创建新对象 Drink.java private static HashSet<Dri
Drink test = new Drink(value1 , value2 , ....);
test.showAll();
有没有一种方法可以在不创建对象的情况下访问showAll()方法,因为我只想打印所有数组对象,而无需每次打印时创建新对象
Drink.java
private static HashSet<Drink> drinks = new HashSet(); //store all drinks in hashset
public void AddDrink(Drink d ){ //add a drink
try {
drinks.add(d);
}catch(Exception e ){
System.out.println(e);
}
}
public void showAll() { //show all drinks
for(Drink d : drinks) {
System.out.println(d);
}
}
private static HashSet=new HashSet()//将所有饮料储存在hashset中
公共空间添加饮料(饮料d){//添加饮料
试一试{
饮料.加入(d);
}捕获(例外e){
系统输出打印ln(e);
}
}
public void showAll(){//显示所有饮料
饮料(d:饮料){
系统输出打印ln(d);
}
}
因为在showAll()方法中:
您使用的唯一字段(即饮料)数据也是静态的:
private static HashSet<Drink> drinks = new HashSet(); //store all drinks in hashset
然后您可以将该方法称为Drink.showAll()
。顺便说一句,您可以将showAll方法缩短为:
public void showAll() { //show all drinks
for(Drink d : drinks) {
System.out.println(d);
}
}
只是:
public static void showAll() {
drinks.forEach(System.out::println);
}
通过结合forEach
和方法参考
在您当前的设计中,public-void-AddDrink(Drink d)
也可以转换为静态方法(即,public-static-void-AddDrink(Drink d)
)
综上所述,@JustAnotherDeveloper的评论为您的类提出了更好的设计
public void showAll() { //show all drinks
for(Drink d : drinks) {
System.out.println(d);
}
}
public static void showAll() {
drinks.forEach(System.out::println);
}