JShell একটি কমান্ড-লাইন টুল যা আমাদের জাভা স্টেটমেন্ট (সিম্পল স্টেটমেন্ট, কম্পাউন্ড স্টেটমেন্ট, বা পুরো মেথড ও ক্লাস) লিখতে, ইভ্যালুয়েট করতে এবং রেজাল্ট প্রিন্ট করতে দেয়।
ফরওয়ার্ড রেফারেন্স হচ্ছে olyan কমান্ড যা মেথড, ভেরিয়েবল, বা ক্লাস-কে রেফার করে যেগুলো JShell-এ টাইপ করা কোডে এক্সিস্ট করে না। যেহেতু কোড সিকোয়েনশিয়ালি লিখা ও ইভ্যালুয়েট হয় JShell-এ, এই ফরওয়ার্ড রেফারেন্সগুলো টেম্পোরারিলি আনরেজলভড থাকে। JShell ফরওয়ার্ড রেফারেন্স সাপোর্ট করে মেথড বডি, রিটার্ন টাইপ, প্যারামিটার টাইপ, ভেরিয়েবল টাইপ, এবং এক ক্লাসের ভিতর।
উদাহরণ ১: ফরওয়ার্ড রেফারেন্স ডিক্লেয়ার (ওয়ার্নিং দেখাবে)
C:\Users\User>jshell
| Welcome to JShell -- Version 9.0.4
| For an introduction type: /help intro
jshell> void forwardReference() {
...> System.out.println(notYetDeclared);
...> }
| created method forwardReference(), however, it cannot be invoked until variable notYetDeclared is declared
jshell> forwardReference()
| attempted to call method forwardReference() which cannot be invoked until variable notYetDeclared is declared
উদাহরণ ২: ভেরিয়েবল ডিক্লেয়ার করার পর কল (সফল)
jshell> String notYetDeclared = "variable is declared" notYetDeclared ==> "variable is declared" jshell> forwardReference() variable is declared