5

オブジェクトをキャストするには 2 つの方法があることに気付きました (違いは外側の括弧の配置です)。

 1. SimpleType simpleType = ((SimpleType) (property.getType()));
 2. SimpleType simpleType = ((SimpleType) property).getType();

彼らは同じことをしていますか?

4

6 に答える 6

10

彼らは同じことをしていますか?

いいえ、そうではありません。

  • 1 つ目は、返された値を にキャストする property.getType()ことSimpleTypeです。(呼び出しはキャストの前に行われます)
  • 2 つ目は、最初に to をキャストしてpropertyからメソッドSimpleTypeを呼び出しますgetType()。(キャストはInvocationの前に行われます)。

括弧の優先順位からも理解できます。優先度が最も高いため、最初に評価されます。

最初のケース: -

だから、で((SimpleType) (property.getType()));: -

(property.getType())

最初に評価され、次にキャストが実行されます。実際、それを括弧で囲む必要はありません。(オペレーターよりもオペレーターpropertyに強くバインドします)。したがって、呼び出しは常にキャストの前に行われます。以下の場合のように強制的に逆にしない限り: -dot (.)cast

2番目のケース: -

((SimpleType) property).getType(): -

((SimpleType) property)

が最初に評価され、次に呼び出しが行われます。As をproperty括弧で囲みました。これにより、括弧によって強制される優先順位が高くなるため、演算子により強くバインドされます。cast

于 2012-11-27T09:47:25.437 に答える
5

彼らはまったく関係のない 2 つのことを行っています。1 つ目は結果のダウンキャストであり、2 つ目は変数getType()のダウンキャストです。property左側の型を考えると、最初のものは必要なもののように見えます。最初の例では余分な括弧があることに注意してください。これで十分であり、慣用的に書かれている方法です。

SimpleType simpleType = (SimpleType) property.getType();
于 2012-11-27T09:47:16.263 に答える
3

それらは同じではありません。

  • getType最初はtoの結果をキャストしSimpleTypeます。
  • 2 番目は にキャストpropertyしてそれSimpleTypeを呼び出しますgetTypeが、 の結果は にgetTypeキャストされませんSimpleType
于 2012-11-27T09:47:40.077 に答える
1

彼らは完全に異なることをしています。それらはまったく同じではありません。

 1. SimpleType simpleTypee = ((SimpleType) (property.getType()));

これは最初にプロパティの getType を呼び出し、次に返されたオブジェクトを SimpleType にキャストします。

 2. SimpleType simpletype = ((SimpleType) property).getType();

これは、最初にプロパティを SimpleType にキャストし、次に SimpleType で getType を呼び出します。

于 2012-11-27T09:48:09.070 に答える
1

いいえ、彼らは同じことをしていません。

SimpleType simpleTypee = ((SimpleType) (property.getType()));

最初にproperty.getType()が呼び出され、 によって返されたオブジェクトproperty.getType()がキャストされますSimpleType

そして2番目のケースでは

SimpleType simpletype = ((SimpleType) property).getType();

最初にオブジェクトpropertyがキャストされSimpleType、次にgetType()その新しくキャストされたオブジェクトで呼び出されます

于 2012-11-27T09:49:01.857 に答える
1

他の回答で詳述されているように、彼らはさまざまなことを行っています。これを行うことでキャストすることもできます

SimpleType.class.cast(property.getType());
SimpleType.class.cast(property).getType();

実際にキャストしたいものに応じて。プロパティまたは getType() の結果。より明示的で見やすいので、私はこの構文を好みます...

于 2012-11-27T09:49:10.100 に答える