0

The title is pretty self-explanatory. Will the raw type of, for example, ArrayList act the same as ArrayList<Object>?


I need to select information form a database based on criteria that crosses multiple tables

Three of my database tables

Other three database tables

I have a problem where I need to select the Project Number, Controlling Department Number, Department Manager's Lname, address, and birthdate for each project located in Stafford. I am having trouble getting the results I want.

I tried:

SELECT PROJECT.PNUMBER, PROJECT.DNUM, EMPLOYEE.LNAME, EMPLOYEE.ADDRESS, EMPLOYEE.BDATE
FROM PROJECT, EMPLOYEE, DEPARTMENT
WHERE PLOCATION = 'STAFFORD' AND DEPARTMENT.MGRSSN = EMPLOYEE.SSN;

And Got:

+---------+------+---------+-------------------------+-----------+
| PNUMBER | DNUM | LNAME   | ADDRESS                 | BDATE     |
| 30      | 4    | WONG    | 683 VOSS, HOUSTON, TX   | 08-DEC-55 |
| 10      | 4    | WONG    | 683 VOSS, HOUSTON, TX   | 08-DEC-55 |
| 30      | 4    | WALLACE | 291 BERRY, BELLAIRE, TX | 20-JUN-41 |
+---------+------+---------+-------------------------+-----------+

But what I should have gotten is (or what I wanted):

+---------+------+---------+-------------------------+-----------+
| PNUMBER | DNUM | LNAME   | ADDRESS                 | BDATE     |
| 10      | 4    | WALLACE | 391 BERRY, BELLAIRE, TX | 20-JUN-41 |
| 30      | 4    | WALLACE | 291 BERRY, BELLAIRE, TX | 20-JUN-41 |
+---------+------+---------+-------------------------+-----------+

Can anyone help me figure out what is wrong with my sql statement? sorry I wasn't able to figure out how to format this

4

2 に答える 2

3

そうではありません。を見てみましょう

  MyClass myClass1 = new MyClass<Integer>();
//MyClass<Object> myClass2 = new MyClass<Integer>();//compilation error
  MyClass<?> myClass3 = new MyClass<Integer>();//this time it compiles

  myClass1.setter(1);
//myClass3.setter(1);//compilation error

のホルダーへの参照を宣言しているが、ホルダーのホルダーを渡してmyClass2いるため、コンパイルされない場合、ジェネリックは共変ではありませんObjectsIntegers

また、場合のようにワイルドカードに変更<Object>すると、そのセッターを任意のオブジェクト (null 以外) で使用できなくなります。これは、任意のタイプのオブジェクトを保持できる参照になる可能性があり、ホルダーへの受け渡しは安全ではないためです。 .<?>myClass3myClass3.someSetter(1)MyClass<?>MyClass<Anything>1Strings

于 2013-11-10T17:23:57.397 に答える
0

メソッド シグネチャに関しては、 erasedEはその boundObjectであるため、 rawArrayListには次のようなメンバー メソッドがあると言っても問題ありません。ArrayList<Object>

サブタイプに関しては、生の型はワイルドカード型に似ています。for anyArrayListのスーパータイプです。一方、コンパイラ エラーや警告を発生させることなくraw に変換できます。ArrayList<x>xArrayList<x>ArrayList

これはすべて下位互換性のためです。これらの役に立たない情報を知る必要がないように、生の型はとにかく避けるべきです。

于 2013-11-10T17:27:47.850 に答える