7

Javaを勉強して、私は多くのチュートリアルのかなり紛らわしい特性について考えました。サンプルチュートリアルからの次の2つのインポートについて考えてみます。

import java.awt.*;
import java.awt.event.*;

最初の行は明らかにjava.awtパッケージをインポートし、2番目の行はawtのサブパッケージをインポートします。しかし、アステリックスにはすべてのサブパッケージを含めるべきではありませんか?したがって、1行目でうまくいくはずです。2行目は必要ないのでしょうか。そうでない場合:アステリックスの本当の目的/使用法は何ですか?

たとえばSELECT * FROM foo、MySQLで使用すると、テーブルからすべてのフィールドが選択されます。おそらく、これが当然のことであると考えるのはばかげています。

4

3 に答える 3

13

いいえ、パッケージは全体として扱われます。それらを階層的に考えることはしばしば有用ですが、Java言語またはコンパイル内ににjava.awt.event 属する java.awtという概念はありません。

SQLデータベースにはサブテーブルなどがないため、SQLテーブルとの比較は正しくありません。代わりに、次のエントリを含むすべてのクラスを表すテーブルがあると想像してください。

ID | Package   | Name
--------------------------
1  | awt       | SomeClassName1
2  | awt.event | SomeClassName2

さて、awtクラスを取得したい場合は、次のように言います。

SELECT * FROM MyTable WHERE Package = 'awt'

パッケージ名がで始まるからと awtいって、これで両方のエントリが得られるとは思わないでしょう。

于 2012-08-26T15:11:15.673 に答える
0

ここで私の答え(および私のコメント)を参照してください。ワイルドカードは、サブパッケージではなく、1レベルの深さになります。

于 2012-08-26T15:11:29.543 に答える
0

各パッケージ名(「abc」)は個別のパッケージです。同様の名前付けプレフィックスを持つ2つのパッケージ(たとえば、「abc」と「abd」)は、名前空間とアクセス制御の両方で、言語用の別個のパッケージです。

もちろん、人間にとって、これはパッケージ間の可能な関係を表しています。

于 2012-08-26T15:15:08.583 に答える