0

以下のコードを参照してください。

public class ExpandableTextView extends TextView {

    public ExpandableTextView(Context context) {
        this(context, null, null);
    }

    public ExpandableTextView(Context context, AttributeSet attrs) {
        this(context, attrs, null);
    }

    public ExpandableTextView(Context context, AttributeSet attrs, Runnable runnable) {
        super(context, attrs);

        TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.ExpandableTextView);
        this.trimLength = typedArray.getInt(R.styleable.ExpandableTextView_trimLength, DEFAULT_TRIM_LENGTH);
        typedArray.recycle();

        setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                trim = !trim;
                setText();
                requestFocusFromTouch();
            }
        });
    }

    public ExpandableTextView(Context context, AttributeSet attrs, Activity activity) {
        super(context, attrs);

        TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.ExpandableTextView);
        this.trimLength = typedArray.getInt(R.styleable.ExpandableTextView_trimLength, DEFAULT_TRIM_LENGTH);
        typedArray.recycle();

        setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                trim = !trim;
                setText();
                requestFocusFromTouch();
            }
        });
    }
}

このようなメソッド(コンテキスト、ヌル、ヌル); 他の 2 つのコンストラクター メソッドを参照できますが、署名または "null" を変更するのではなく、どちらを参照するかを指定する方法はありますか? ありがとう

4

2 に答える 2

2

もちろん、nullを署名型にキャストするだけです!

    new ExpandableTextView(context, (AttributeSet)null, (Runnable)null)
于 2015-09-07T21:39:44.430 に答える
0

Compilerがあいまいなメソッドに言及するエラーをスローするため、コードは機能しないはずです。Java は常に、利用可能なメソッドの最も具体的な適用可能なバージョンを使用しようとするためです (JLS §15.12.2 を参照)。Andnullは、タイプ Context、AttributeSet、および Runnable の有効な値です。したがって、3 つのバージョンすべてが適用されます。

于 2015-09-07T21:43:47.357 に答える