8

コードは次のとおりです。

class Book
{
     private String title
     Book (String theTitle)
     {
         title=theTitle
     }
     String getTitle()
     {
         return title
     }
}
Book gina=new Book('Groovy in Action')
assert gina.getTitle()=='Groovy in Action'
assert getTitleBackwards(gina)=='noitcA ni yvoorG'
String getTitleBackwards(Book)
{
    title=book.getTitle()
    return title.reverse()
}

Ctrl+R で実行すると、次のコンパイル エラーが発生します。

1 コンパイル エラー:

クラス Book の無効な重複クラス定義: ソース Book.groovy には、クラス Book の少なくとも 2 つの定義が含まれています。クラスの 1 つは、class ステートメントを使用して明示的に生成されたクラスであり、もう 1 つは、ファイル名に基づいてスクリプト本体から生成されたクラスです。解決策は、ファイル名を変更するか、クラス名を変更することです。行: 1、列: 1

ここで何が起こっているのか、誰か説明してくれませんか。

4

3 に答える 3

1
  1. Groovy コンソールはアイテム (ソース、クラス、変数) を内部的にバッファリングします。「実行」の 2 回目のクリックは、最初のクリックとは異なる場合があります。ほとんどすべてのインタプリタ ウィンドウ (どの言語でも) は同様の動作をします。
  2. ファイルから開いたり、ファイルなしでウィンドウに貼り付けたりすると、微妙な違いがあり、その結果、Book や ConsoleScript1 などの名前を付けることができます (Groovy の「手続き型」使用により、「オブジェクト」の背景が非表示になり、ファイルから非表示/デフォルト/生成されたクラス名など)

これは、アドホック プログラミング (スクリプト モード) によって十分に役立つ可能性がありますが、真の OOP にとって常に最適であるとは限りません。

PS。コードのエラーも少ない

于 2015-09-09T12:37:38.947 に答える