কম্পিউটার

জাভা 9 এ স্ট্যাকফ্রেমের প্রতিফলন ফ্রেমগুলি কীভাবে দেখাবেন?


জাভা 9 এ java.lang.StackWalker ব্যবহার করে একটি আদর্শ API প্রদান করা হয়েছে ক্লাস এই ক্লাসটি অলস অ্যাক্সেসকে অনুমতি দিয়ে দক্ষ হওয়ার জন্য ডিজাইন করা হয়েছে স্ট্যাক ফ্রেমে. অন্যান্য কয়েকটি বিকল্প একটি স্ট্যাক ট্রেসের অনুমতি দেয় যাতে বাস্তবায়ন এবং/অথবা প্রতিফলন ফ্রেম অন্তর্ভুক্ত থাকে , এবং এটি ডিবাগিং উদ্দেশ্যে দরকারী হতে পারে। উদাহরণস্বরূপ, আমরা SHOW_REFLECT_FRAMES যোগ করি সৃষ্টির সময় স্ট্যাকওয়াকার উদাহরণের বিকল্প, যাতে প্রতিফলিত পদ্ধতির জন্য ফ্রেমগুলিও মুদ্রিত হয়।

নীচের উদাহরণে, আমরা স্ট্যাকফ্রেমের প্রতিফলন ফ্রেমগুলি দেখাতে পারি

উদাহরণ

import java.lang.StackWalker.Option;
import java.lang.StackWalker.StackFrame;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.List;
import java.util.stream.Collectors;

public class ReflectionFrameTest {
   public static void main(String args[]) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
      Method test1Method = Test1.class.getDeclaredMethod("test1", (Class[]) null);
      test1Method.invoke(null, (Object[]) null);
   }
}
class Test1 {
   protected static void test1() {
      Test2.test2();
   }
}
class Test2 {
   protected static void test2() {
      // show reflection methods
      List<StackFrame> stack = StackWalker.getInstance(Option.SHOW_REFLECT_FRAMES).walk((s) -> s.collect(Collectors.toList()));
      for(StackFrame frame : stack) {
         System.out.println(frame.getClassName() + " " + frame.getLineNumber() + " " + frame.getMethodName());
      }
   }
}

আউটপুট

Test2 22 test2
Test1 16 test1
jdk.internal.reflect.NativeMethodAccessorImpl -2 invoke0
jdk.internal.reflect.NativeMethodAccessorImpl 62 invoke
jdk.internal.reflect.DelegatingMethodAccessorImpl 43 invoke
java.lang.reflect.Method 564 invoke
ReflectionFrameTest 11 main

  1. কিভাবে আমরা জাভাতে একটি JTextField এ প্যাডিং যোগ করতে পারি?

  2. জাভাতে একটি স্ট্রিংকে একটি ইনপুটস্ট্রিম অবজেক্টে কীভাবে রূপান্তর করবেন?

  3. জাভাতে সদস্য অভ্যন্তরীণ শ্রেণীকে কীভাবে ইনস্ট্যান্ট করা যায়?

  4. জাভাতে সাব-প্যাকেজ কিভাবে ব্যবহার করবেন?