2016-08-01 1 views
0

アンドロイドにクラスローダーのロードクラスがありますが、私は質問があります。このプロセスで同じクラスを特定する方法私はGoogleのクラスローダーの原則といくつかの人が言うことを見つける:どのようにアンドロイドで同じクラスを識別するには?

クラスが同じクラス名を持ち、同じクラスローダーを持っている場合、それは同じクラスです。しかし、私はアンドロイドスタジオを使用して、私はという名前のクラスを定義しています。と私は他のクラスで使っています。ヒントでは2つのクラスがあります。 1つは私の定義、もう1つはシステムクラスです。

しかし、親のモードのベースクラスローダーには、正しい方法でシステムクラスがあります、それを理解する方法はありますか?

私は非常に疑問だ!

+0

を重ねStringクラスを記述した場合

ピュアJavaで同じ、そのJava質問やAndroid-Studioのですか? – agilob

+1

コンパイル時には、パッケージ名とクラス名のみがカウントされます。クラスローダーは、実行時に機能します。 – Henry

+0

@agilobそれはJavaの質問かもしれませんが、私は確信していません –

答えて

1

を使用取得するには、この

Context context = MainActivity.this; 

ともに使用するコンテキスト変数を使用する必要があります。しかし、私はアンドロイドを使用[...]と私は "View"という名前のクラスを定義し、私は他のクラスでそれを使用します。 1つは[私の]、もう1つはシステムクラスです。

私が正しく理解していれば、クラスローダは、それが正しく仕事と負荷com.your.package.Viewandroid.view.View両方ですやっています。あなたは単にViewによって参照可能なものを選択してください。importステートメントを使用してください。そうしないと、今説明した2つのクラスのように、名前を完全修飾する必要があります。あなたはjava.lang.String

+0

com.your.packageで同じ名前のクラスがあり、対処方法がある場合は?どのロードを先に参照するのですか? –

+0

同じパッケージ内に同じ名前の2つのクラスを作成すべきではありません。コンパイルエラーが表示されます。 –

+0

問題の一般的な解決策は、クラス名を自己記述的にすることであり、できればシステムクラスと重ならないようにすることです。 –

-2

あなたは、クラス名がこの

MainActivity.this.getClass().getSimpleName(); 
+0

何のためのコンテキスト変数?必要な活動名は何ですか? –

+2

これは間違っています。 – Shark

関連する問題