Jejak tumpukan - 1

"Hai! Dina iki aku bakal ngandhani apa tumpukan tumpukan. Nanging pisanan aku kudu ngandhani apa tumpukan."

"Mbayangno tumpukan kertas - arahan kanggo karyawan tartamtu. Sampeyan bisa nyelehake tugas anyar ing ndhuwur tumpukan, utawa sampeyan bisa njupuk tugas saka ndhuwur. Iki tegese tugas ora bakal ditindakake miturut urutan sing ditampa. . Tugas sing dilebokake ing tumpukan paling anyar bakal dadi sing pertama dieksekusi. Struktur unsur koleksi kanthi cara iki mbentuk tumpukan . "

" Jawa duwe koleksi khusus kanggo sing - Stack . Iku koleksi sing nduweni cara kanggo 'nambah unsur' lan 'njupuk (njaluk) unsur'. Minangka sampeyan bisa uga wis guessed, unsur sing ditambahake pungkasan bakal dadi pisanan. dijupuk."

"Swara rada langsung."

"Apik. Saiki aku bakal nerangake apa tumpukan tilak ."

"Bayangake yen ing metode program Jawa A sing diarani metode B , sing diarani metode C , sing diarani metode D. Kanggo metu saka metode B , kita kudu metu dhisik metode C , lan kanggo nindakake iki - kita kudu metu dhisik metode D. Iki prilaku kaya tumpukan."

"Kok kandhamu mirip?"

"Kanggo entuk sawetara tugas ing tengah tumpukan kertas, umpamane, sampeyan kudu nglakokake kabeh tugas sing ana ing ndhuwur."

"Ana sawetara podho, nanging aku ora yakin aku ngerti kabeh kanthi bener."

"Deleng. Tumpukan minangka sakumpulan unsur. Kaya potongan kertas ing tumpukan. Kanggo njupuk kertas katelu saka ndhuwur, sampeyan kudu njupuk sing nomer loro, lan sampeyan kudu njupuk sing pisanan. tansah bisa nyelehake lan njupuk kertas, nanging sampeyan kudu njupuk kertas ndhuwur dhisik."

"Padha bener kanggo telpon fungsi. Cara A nelpon cara B , kang nelpon cara C. Kanggo metu saka A , sampeyan kudu metu saka B dhisik , lan kanggo nindakake iku, sampeyan kudu metu saka C. "

"Ngenteni. Yen aku ngerti apa sing sampeyan gunakake, kabeh konsep tumpukan boils mudhun kanggo 'njupuk Piece saka kertas sing ditambahake pungkasan' lan 'sampeyan mung bisa metu saka cara sing paling anyar ngetik'. Apa akurat? "

"Ya. Urutan panggilan fungsi dikenal minangka 'tumpukan telpon' utawa mung 'tumpukan'. Fungsi pungkasan sing disebut fungsi pisanan kanggo mungkasi. Ayo digali contone."

Entuk lan tampilake tumpukan panggilan saiki:
public class ExceptionExample
{
  public static void main(String[] args)
  {
    method1();
  }

  public static void method1()
  {
    method2();
  }

  public static void method2()
  {
    method3();
  }

  public static void method3()
  {
     StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
    for (StackTraceElement element : stackTraceElements)
    {
       System.out.println(element.getMethodName());
    }
  }
}
asil:
getStackTrace
method3
method2
method1
main

"OK. Aku njaluk kabeh babagan telpon fungsi. Nanging apa StackTraceElement iki?"

"Mesin Jawa nglacak kabeh panggilan fungsi. Kanggo iku, ana koleksi khusus - tumpukan. Nalika siji fungsi nelpon liyane, Mesin Jawa sijine obyek StackTraceElement anyar menyang tumpukan. Nalika fungsi rampung, unsur kasebut dibusak. saka tumpukan. Iki tegese tumpukan tansah nyimpen informasi anyar babagan kahanan saiki 'tumpukan panggilan fungsi' .

"Saben obyek StackTraceElement ngemot informasi babagan metode sing diarani. Utamane, sampeyan bisa njaluk jeneng metode nggunakake metode getMethodName ."

"Sampeyan bisa ndeleng cara kerjane ing conto ing ndhuwur:

1) Kita njaluk tumpukan telpon.

2) Kita nggunakake saben daur ulang kanggo ngliwati. Muga-muga sampeyan ora lali babagan apa.

3) Kita ngasilake jeneng metode menyang System.out ."

"Sing nggumunake! Lan ora rumit banget. Matur nuwun, Rishi!"