22

私たちが知っているように、C#はオブジェクトが型であるかどうかのチェックを自動的に実行するASキーワードを提供し、そうである場合はそれを必要な型にキャストし、そうでない場合はnullを返します。

public class User { }
Object obj = someObj;
User user = obj As User;

上記の例では、ObjectobjはUserタイプまたはその他のタイプにすることができます。ユーザーは、タイプUserまたはnullのオブジェクトを取得します。これは、C#のAsキーワードが最初にチェックを実行し、可能であれば、結果の型へのオブジェクトのキャストを実行するためです。

では、JavaにC#のASキーワードに相当するキーワードはありますか?

4

3 に答える 3

26

ヘルパーメソッドを作成できます

public static T as(Object o, Class<T> tClass) {
     return tClass.isInstance(o) ? (T) o : null;
}

User user = as(obj, User.class);
于 2011-06-02T20:11:51.307 に答える
21

いいえ、instanceof一致するかどうかを確認してからキャストできます

User user = null;
if(obj instanceof User) {
  user = (User) obj;
}
于 2011-06-02T20:07:51.990 に答える
12

キーワードはありませんが、完全を期すために、1ライナーに相当するものを提供します。

User user = obj instanceof User ? (User) obj : null;

(明示的なキャストは必要ないかもしれませんが、よくわかりません。)

于 2011-06-02T21:11:35.450 に答える