乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      BeanShell快速入門---Java應(yīng)用程序腳本引擎 | 中華學(xué)習(xí)網(wǎng)--IT科技頻道

       tinaroad 2006-09-08

      快速入門

      歡迎使用BeanShell.這是一個(gè)速成課程。我們將省去一些重要的選項(xiàng)和細(xì)節(jié)。要學(xué)習(xí)更多的內(nèi)容請看本User‘s Guide的其它部分。

      下載和運(yùn)行BeanShell

      請到http://www.下載最新的JAR文件。你可以用圖形桌面模式和命令行模式起動(dòng)BeanShell。
      如果你只是要玩一玩BeanShell,你可以在BeanShell的jar文件上雙擊來起動(dòng)BeanShell的桌面。但不管怎樣,如果你要讓BeanShell與你的類與應(yīng)用程序一起工作就必須將BeanShell的jar文件加到classpath中。
      你可以將BeanShell的jar文件拖到JAVA_HOME的ext目錄也可以直接加到classpath中。

      • windows用戶請將bsh.jar放在JAVA_HOME/jre/lib/ext文件夾,OSX用戶可以放在/Library/Java/Extensions.
        或者增加BeanShell到你的classpath目錄,如:
        unix: export CLASSPATH=$CLASSPATH:bsh-xx.jar
        windows:set classpath %classpath%;bsh-xx.jar

      然后你就可以運(yùn)行BeanShell在GUI或命令行模式:

      •  java bsh.Console       // run the graphical desktop
        or
             java bsh.Interpreter   // run as text-only on the command line
        or
             java bsh.Interpreter filename [ args ] // run script file

      可以在你的應(yīng)用程序內(nèi)部來運(yùn)行,也可以作為debug及servlet的遠(yuǎn)程服務(wù)器模式,或一個(gè)Applet內(nèi)部來運(yùn)行BeanShell。請參考"BeanShell Modes of Operation"獲得更多詳情。

      BeanShell GUI

      用GUI模式啟動(dòng)BeanShell后,將打開一個(gè)桌面視窗。用鼠標(biāo)右擊在桌面的背景上,你可以打開另一個(gè)控制臺(tái)視窗及其它的工具如一個(gè)簡單的類游覽器。
      每一個(gè)控制臺(tái)視窗運(yùn)行一個(gè)獨(dú)立的BeanShell解釋器。這個(gè)圖形化的控制臺(tái)支持基本的歷史命令,行編輯,剪切和粘貼,甚至類和變量名的自動(dòng)完成功能。從控制臺(tái)你能開啟一個(gè)簡單的編輯視窗。在它里面,你可以編寫腳本和使用‘eval’選項(xiàng)求表達(dá)式的值。

      Java語句和表達(dá)式

      BeanShell能理解標(biāo)準(zhǔn)的JAVA語句,表達(dá)式,和方法宣告。語句和表達(dá)式的內(nèi)容可以是:變量,宣告,賦值,方法調(diào)用,循環(huán),條件等。
      在Java程序中你必須嚴(yán)格的使用它們,但在BeanShell中,你可以用“寬松類型”(loosely typed)的方式來使用它們。也就是說,你可以在寫腳本時(shí)偷懶,不進(jìn)行變量類型的宣告(在原始數(shù)據(jù)類型和對象都可以)。如果你試著用錯(cuò)變量類型,BeanShell將會(huì)給出一個(gè)錯(cuò)誤。
      這里有一些例子:
      foo = "Foo";   
      four = (2 + 2)*2/2;
      print( foo + " = " + four );  // print() is a BeanShell command
      // Do a loop
      for (i=0; i<5; i++)
          print(i);  
      // Pop up a frame with a button in it
      button = new JButton( "My Button" );
      frame = new JFrame( "My Frame" );
      frame.getContentPane().add( button, "Center" );
      frame.pack();
      frame.setVisible(true);

        有用的BeanShell命令

        在剛才那個(gè)例子中我們用了一個(gè)內(nèi)建在BeanShell中的一個(gè)方便的命令print(),來顯示變量的值。print()跟ava的System.out.println()非常的相像,除非它能保證輸出總是命令行。print()也可以顯示一些對象的類型(如數(shù)組),但比Java的更詳細(xì)。另一個(gè)相關(guān)的命令是show(),用來開啟與關(guān)閉顯示你輸入的每一行的結(jié)果。
        這兒是一些其它的BeanShell的命令:
        source(), run() - 將一個(gè)bsh腳本讀到解釋器或運(yùn)行在另一個(gè)解釋器。
        frame() - 顯示一個(gè)Frame或JFrame的GUI組件.
        load(), save() - 載入和保存一個(gè)序列化的對象到一個(gè)文件.
        cd(), cat(), dir(), pwd(), etc. - 類unix的shell命令。
        exec() - 運(yùn)行一個(gè)本地的程序。
        javap() - 打印一個(gè)對象的方法和字段,類似于Java的javap命令。
        setAccessibility() - 開啟無限制的存取private 和protected的組件。
        要獲得更多的信息請查看BeanShell命令的詳細(xì)清單。

        提示:
        BeanShell命令并不是真的"內(nèi)建"其中的,而是作為腳本方法自動(dòng)從classpath載入的. 你可以擴(kuò)展基本命令集并加到classpath中作為自訂義的腳本來使用。

        腳本方法

        你可以在bsh中宣告和使用方法,就像在java的類中一樣。

        • int addTwoNumbers( int a, int b ) {
              return a + b;
          }
          sum = addTwoNumbers( 5, 7 );  // 12

        bsh的方法可以有動(dòng)態(tài)的(寬松的)參數(shù)和返回類型。

        • add( a, b ) {
              return a + b;
          }
          foo = add(1, 2);            // 3
          foo = add("Oh", " baby");   // "Oh baby"

        實(shí)現(xiàn)Interface

        注意:如果要BeanShell能實(shí)現(xiàn)任意的Interface,必須有jdk1.3及以上支持。
        你可以在腳本中用標(biāo)準(zhǔn)的Java內(nèi)部類的語法來實(shí)現(xiàn)Interface.例如:

        • ActionListener scriptedListener = new ActionListener() {
          &nbsp;   actionPerformed( event ) { ... }
          }

            你可以不用實(shí)現(xiàn)Interface的所有方法,而只用實(shí)現(xiàn)你需要的方法。如果代碼中調(diào)用了未被實(shí)現(xiàn)的方法,將丟出異常。如果你想重載大量的方法的行為--例如為日志生成一個(gè)"啞"適配器--你可以在腳本對象中實(shí)現(xiàn)一個(gè)特殊的方法:invoke(name,args)。invoke()方法用來處理任何未被定義的方法的調(diào)用:

            • ml = new MouseListener() {
                  mousePressed( event ) { ... }
                  // handle the rest
                  invoke( name, args ) { print("Method: "+name+" invoked!");
              }

            腳本對象

            在BeanShell中,和在JavaScript與Perl中一樣,腳本對象是用封閉的方法體一構(gòu)成的。通過在方法未尾返回一個(gè)特殊值"this",你就可以像使用方法一樣調(diào)用這個(gè)對象了。在這個(gè)方法調(diào)用時(shí),你可以給與它任何的值。通常對象內(nèi)部需要包括方法,所以BeanShell的腳本方法在一定程度上可再包含一些方法以構(gòu)成腳本對象。例如:

            • foo() {
                  print("foo");
                  x=5;
                  bar() {
                      print("bar");
                  }
                  return this;
              }
              myfoo = foo();    // prints "foo"
              print( myfoo.x ); // prints "5"
              myfoo.bar();      // prints "bar"

            如果這些代碼對你來說很陌生,別急,請用戶手冊可得到更透徹的解釋。

            在你的腳本中,BeanShell腳本對象(也就是先前例子中的"this"參照)能自動(dòng)實(shí)現(xiàn)任何JAVA介面類型。當(dāng)JAVA代碼調(diào)用相應(yīng)與之通訊的腳本方法內(nèi)的方法。當(dāng)你試著將腳本對象作為參數(shù)傳給Java方法時(shí),BeanShell會(huì)自動(dòng)將它造型(cast)為相應(yīng)的類型。如要傳遞BeanShell外部的對象時(shí),你可以在需要時(shí)顯式的進(jìn)行造型(cast).請看用戶手冊中的詳細(xì)內(nèi)容。

            從你的應(yīng)用程序調(diào)用BeanShell

            通過建立一個(gè)BeanShell解釋器,使用eval()或source()命令,你可以在你的應(yīng)用程序中求文本表達(dá)式的值和運(yùn)行腳本。如果你希望在你的腳本內(nèi)部使用一個(gè)對象,可以用set()方法傳遞對象的變量參照給BeanShell,并通過get()方法取得結(jié)果。

            • import bsh.Interpreter;
              Interpreter i = new Interpreter();  // Construct an interpreter
              i.set("foo", 5);                    // Set variables
              i.set("date", new Date() );
              Date date = (Date)i.get("date");    // retrieve a variable
              // Eval a statement and get the result
              i.eval("bar = foo*10");            
              System.out.println( i.get("bar") );
              // Source an external script file
              i.source("somefile.bsh");

            本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
            轉(zhuǎn)藏 分享 獻(xiàn)花(0

            0條評論

            發(fā)表

            請遵守用戶 評論公約

            類似文章 更多