10

必要に応じて少し疑問を持っていますが、ユーティリティクラスについて少し考えています。

メイン アクティビティでそのクラスを使用するよりもアプリケーションでユーティリティ クラスを使用する場合、そのクラスのオブジェクトを作成する必要がありますか、またはメイン アクティビティでそのクラスを直接インポートできますか?

明確な意味を成していない場合は申し訳ありません。

簡単に言うと、明確にしたいのは、基本的にメイン アクティビティでユーティリティ クラスをどのように使用できるかということだけです。

ありがとう、デビッド

4

7 に答える 7

14

それは主に、ユーティリティ クラスが何をするかに依存します。ただし、ほとんどの場合、Utility クラスを作成する場合は、静的メソッドを作成し、インスタンスを作成せずにそれらを呼び出します。

class MyUtilities{
    public static String foo(String bar){
        return bar.toUppercase;
    }
}

次に、あなたの活動について:

MyUtilities.foo("baz");

もちろん、Utility クラスのインスタンスを作成したい場合もあります。たとえば、すべてのListViews.

于 2010-10-14T05:17:40.910 に答える
10

それは、あなたが言及しているユーティリティの種類に大きく依存します。がある

1) 静的メソッドを実装するユーティリティ クラス。その場合、クラス名を使用して直接呼び出すだけです

2) 静的ではないユーティリティ クラス メソッド - そのクラスのインスタンスを作成し、場合によっては初期化する必要があります。次に、インスタンスを使用してこれらのメソッドを呼び出します。

3) を通じてアクセスできるユーティリティ クラスContext次に、 getApplicationContext()を呼び出しgetて、ユーティリティ クラスにアクセスできます。

于 2010-10-14T05:35:38.530 に答える
3
  public final class Utils
  {
    private Utils() 
    {
    }

    public static void makeToast(Context context, String text){
        Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
    }
 }

これは通常、static methods(おそらくプライベートコンストラクターを持ち、abstract/final防止するようにマークされている)のみを持つinstantiation/subclassing).クラスです。他のクラスを使いやすくするためにのみ存在します-たとえば、static methods文字列値を操作するための束を提供し、文字列自体が実行しない追加のアクションを実行しますサポート。

通常、ユーティリティ クラスoperate on classes制御できません。それらはそうではありませんが、それでも非常に便利です。behaviour directlyclassterribly neat in OO terms,

ジョン・スキートの回答

于 2015-07-23T07:49:33.067 に答える
1

ユーティリティ クラスのメソッドが静的である場合は、メイン アクティビティから呼び出すことができます。例えば:

int i = Utility.RandInt();

それらが静的でない場合は、オブジェクトを作成する必要があります。

Utility u = new Utility();
int i = u.randInt();
于 2010-10-14T05:14:13.123 に答える
0

ユーティリティ クラスがアプリケーションで作成されている場合は、最初にアプリケーション クラスで getMethod を作成してから参照できます。

アプリケーション mc = (アプリケーション) context.getApplicationContext();

mc.getUtilityClass().SomeMethod()

于 2010-10-14T05:13:53.310 に答える
-2

正確な質問が何であるかわかりません。しかし、これは私のアクティビティで Utility クラスを使用したコードです。AnimationUtil は、アニメーションを ImageView にロードするために使用されます。

    ImageView waitImg   = (ImageView) findViewById(R.id.ImageView02);

    Animation waitAnim  = AnimationUtils.loadAnimation(this, R.anim.wait_rotate);

    waitImg.startAnimation(waitAnim); 
    waitAnim.cancel();
    waitAnim.reset();
于 2010-10-14T05:18:53.173 に答える