سؤال

هل هناك طريقة لي لتمرير المتغيرات إلى قائمة الإجراءات دون الاتصال بها على أنها نهائية؟ أرغب في استخدام هاتين النقطتين داخل نوع من الطريقة الموقوتة ... لقد جربت thread.sleep () ولكن لسبب ما لا يتوافق بشكل جيد مع بقية البرنامج. هذا هو التنسيق الذي أرغب حقًا في استخدامه ، لكنني أدرك أنه قد يكون من المستحيل نجاحه. أنا منفتح على أي نصيحة. شكرًا!

(أنا آسف إذا كان هذا سؤالًا غبيًا ، فقد بحثت عن إجابة ولكن لا يمكنني العثور على واحدة.)

public void timedMain(Point current, Point wanted){
          ActionListener taskPerformer = new ActionListener(){
              public void actionPerformed(ActionEvent evt){
                  System.out.println(wanted+" "+current);}};
                  actiontimer = new Timer(delay, taskPerformer);
                  actiontimer.start();}
هل كانت مفيدة؟

المحلول

يمكنك القيام بذلك ، مما يتجنب إعلان المعلمات على أنها نهائية.

public void timedMain(Point current, Point wanted) {
      final Point c = current;
      final Point w = wanted;
      ActionListener taskPerformer = new ActionListener(){
          public void actionPerformed(ActionEvent evt){
              System.out.println(w + " " + c);}};
              actiontimer = new Timer(delay, taskPerformer);
              actiontimer.start();}

أو يمكنك تغيير أنواع current و wanted حتى كانوا قابلين للتغيير Point حامليهم ولديهم actionPerformed الطريقة انظر إلى القيم الحالية في حاملي.

ولكن لا توجد طريقة لإعلان الفئة الداخلية حتى يتمكن من رؤية التغييرات التي تم إجراؤها على متغير في نطاق طريقة مغلق ... إذا كان هذا هو ما تحاول القيام به.

نصائح أخرى

يمكنك أن تفعل بعض الأشياء

  • يمكنك الترويج لمستمع العمل المجهول إلى فئة داخلية (ثابتة) ، وتمرير الحجج إلى المنشئ

  • يمكنك تحديد وظيفة صمم مستمعًا مجهولًا ، بدلاً من ضمها في الكود الخاص بك ، وجعل المعلمات إلى هذه الوظيفة النهائية

ما الخطأ في مجرد وضع علامة على "النهائي" ، رغم ذلك؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top