REPL মানে Read-Evaluate-Print-Loop। এটি কিছু স্টেট ধারণ করে, এবং JShell-এ প্রতিটি স্টেটমেন্টের একটি স্টেট থাকে। এই স্টেট স্নিপেট এবং ভেরিয়েবলের এক্সিকিউশন স্ট্যাটাস (execution status) নির্দেশ করে। এটি JShell ইনস্ট্যান্সের eval() মেথডের ফলাফল দ্বারা নির্ধারিত হয়, যা কোড ইভ্যালুয়েট করে।
সাতটি ভিন্ন স্ট্যাটাস স্টেট নিচে দেওয়া হলো:
- DROPPED: স্নিপেট নিষ্ক্রিয় (inactive)।
- NONEXISTENT: স্নিপেট নিষ্ক্রিয় কারণ এখনো অস্তিত্ব নেই।
- OVERWRITTEN: স্নিপেট নিষ্ক্রিয় কারণ এটি একটি নতুন স্নিপেট দিয়ে রিপ্লেস করা হয়েছে।
- RECOVERABLE_DEFINED: স্নিপেট একটি ডিক্লেরেশন স্নিপেট যার সাথে পোটেনশিয়ালি রিকভারেবল অনরেজলভড রেফারেন্স বা বডিতে অন্যান্য সমস্যা আছে।
- RECOVERABLE_NOT_DEFINED: স্নিপেট একটি ডিক্লেরেশন স্নিপেট যার সাথে পোটেনশিয়ালি রিকভারেবল অনরেজলভড রেফারেন্স বা অন্যান্য সমস্যা আছে।
- REJECTED: স্নিপেট নিষ্ক্রিয় কারণ প্রাথমিক ইভ্যালুয়েশনে কম্পাইলেশন ফেল হয়েছে এবং এটি আরও JShell স্টেট পরিবর্তন দিয়ে বৈধ হতে পারে না।
- VALID: স্নিপেট একটি বৈধ (valid) স্নিপেট।
উদাহরণ
import java.util.List;
import jdk.jshell.*;
import jdk.jshell.Snippet.Status;
public class JShellTest {
public static void main(String args[]) {
JShell shell = JShell.create();
List events = shell.eval("int a, b, sum; " +
"a = 12; b = 11; sum = a + b; " +
"System.out.println(sum);" );
for(SnippetEvent event : events) {
Snippet snippet = event.snippet();
Snippet.Status snippetstatus = shell.status(snippet);
if(snippetstatus == Status.VALID) {
System.out.println("Successfully executed");
}
}
}
}
আউটপুট
Successfully executed Successfully executed Successfully executed