Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java访问公共类方法而不创建对象_Java - Fatal编程技术网

java访问公共类方法而不创建对象

java访问公共类方法而不创建对象,java,Java,我是java初学者,我有一个Drink类,其中有一个showAll()方法来打印存储在私有哈希集中的所有Drink对象。在我的主要功能中,我可以通过以下方式访问此方法 Drink test = new Drink(value1 , value2 , ....); test.showAll(); 有没有一种方法可以在不创建对象的情况下访问showAll()方法,因为我只想打印所有数组对象,而无需每次打印时创建新对象 Drink.java private static HashSet<Dri

我是java初学者,我有一个Drink类,其中有一个showAll()方法来打印存储在私有哈希集中的所有Drink对象。在我的主要功能中,我可以通过以下方式访问此方法

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);
    }