繁体   English   中英

隐式调用方法

[英]implicitly call a method

我自己学习Java,我陷入了implicitly call another method困境,我无法弄清楚在Card Shuffling and Dealing Simulation中how dealCard method call ToString method implicitly

 public class Card 
    {
       private String face;
       private String suit; 

       public String toString() 
       { 
          return face + " of " + suit;
       } // end method toString
}

// DeckOfCards类代表一副扑克牌。

import java.util.Random;

public class DeckOfCards
{
   public Card dealCard()
   {
      // determine whether Cards remain to be dealt
      if ( currentCard < deck.length )
         return deck[ currentCard++ ];
      else        
         return null;
   } 
} 

//执行应用

public class DeckOfCardsTest
{
  public static void main( String[] args )
   {
      DeckOfCards myDeckOfCards = new DeckOfCards();
      myDeckOfCards.shuffle(); // place Cards in random order

      // print all 52 Cards in the order in which they are dealt
      for ( int i = 1; i <= 52; i++ )
      {
         // dealCard method implicitly call ToString method 
         System.out.printf( "%-19s", myDeckOfCards.dealCard() );
      } 

dealCard方法不会隐式调用toString 它只是从您的卡组中返回一张卡。

toString()的隐式调用是由您从main方法调用的printf方法完成的:

System.out.printf( "%-19s", myDeckOfCards.dealCard() );

每当将类型为Object某种东西传递给printf方法时,而不是printf方法不知道的类型(例如,它知道数字),则它使用toString()方法来获取对象的String表示形式。

System.out.printf(“%-19s”,myDeckOfCards.dealCard());

您正在打印一个字符串(%s),因此Java将查找Card类的toString()方法。

toString()方法将返回表示对象的字符串。 如果不重写此方法(属于Object类的一部分),您将看到一个奇怪的字符串,它是Java默认情况下在您的对象处给出的表示形式

Println(Object obj)方法尝试将该对象转换为String,如下所示:String s = String.valueOf(x);

String.valueof(object)将检查object是否为null,打印null,否则将调用Object.toString()方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM