سؤال

كنت أرغب في استخدام رمز Java الخاص بي كنصوص Beanshell لكن Beanshell يلقي استثناءً قائلاً إن الفصل غير موجود في مساحة الاسم. أليس هناك فئة داخلية في Beanshell أم أنها لديها أي استخدام آخر؟

السيناريو الخاص بي يبدو هنا:

.......
.......
java code
.......
.......
MyClass m = new MyClass(); //Error here: MyClass not fount in namespace



class MyClass {

}

أستخدم الفصل الداخلي في البرنامج النصي ، الذي أعلنه في البرنامج النصي.

شكرا ، بلال

هل كانت مفيدة؟

المحلول

ربما إجابة سخيفة هنا ولكن هل يمكن أن يكون تعريف myClass في الاعلى استخدامه في الملف؟ ألا تقوم برامج SHELL Proccts خطيًا؟

إن نظرة سريعة في المستندات لا تتهجى هذا ولكن اختبارات البرنامج النصي التالي تعمل بشكل جيد بالنسبة لي:

class MyClass {
}
MyClass m = new MyClass();

نصائح أخرى

تعريف الفئة غير مدعوم من قبل Beanshell.

يمكنك استخدام بناء جملة الفئة الداخلية بين شيل لتنفيذ واجهة:

    x = new MyInterface() {
        overriddenMethod() {
          // ....
        }
    }

v = x.overriddenMethod(); 

أو

    overriddenMethod() {
       //.....
    }

    // 'this' is a object of whatever Foo expects 
    //
    new Foo(this);

في حالتك ، أعتقد أنك أفضل حالًا في الذهاب مع نهج الكائن النصوص:

myClass() {

// methods ...

return this;

};

m = myClass(); // new instance

معلومات إضافية: فئة داخلية مجهولة كحجة لا يمكنك استخدام ، لذلك تحتاج إلى تعيين تنفيذك لمتغير. (في jmeter)

لا تعمل:

object.setContext(new SomeInterface(){
  //implement methods
});

الأعمال:

SomeInterface ctx = new SomeInterface(){
    //implement methods
});
object.setContext(ctx);

آمل أن يساعد ذلك في شخص ما.

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