类型参数T隐藏了类型T

罗伯托·伦巴第尼(Roberto Lombardini)

我的问题是:为什么,如果我使用LinearLayout而不是Object我的AsyncTaskTableWithinExpListTask<Params, Progress, LinearLayout>)的“结果” ,Eclipse会给我很多错误,例如无法实例化LinearLayout类型
在我看来,它不再识别LinearLayoutcreateFormattedCell(),我也不明白为什么。
AsyncTask声明中LinearLayout有黄色下划线和Eclipse说:类型参数的LinearLayout是隐藏式的LinearLayout
请有人可以向我解释一下吗?

这是该类的代码:

import android.content.Context;
import android.graphics.Color;
import android.graphics.Typeface;
import android.os.AsyncTask;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;

public class TableWithinExpListTask<Params, Progress, LinearLayout> extends AsyncTask<Params, Progress, LinearLayout> {

    private final int TABLE_BORDER = 1;
    private final int TABLE_TEXT_PADDING = 10;


    private Context context = null;
    private String str = null;
    private boolean tableHeader = false;
    private LinearLayout column = null;

    public TableWithinExpListTask(Context context, String str, boolean tableHeader, LinearLayout column) {
        this.context = context;
        this.str = str;
        this.tableHeader = tableHeader;
        this.column = column;
    }

    @Override
    protected LinearLayout doInBackground(Params... arg0) {
        return this.createFormattedCell(this.tableHeader, this.str);
    }

    @Override
    protected void onPostExecute(LinearLayout result) {
        this.column.addView(result);
    }

    private LinearLayout createFormattedCell(boolean tabHeader, String str) {
        // Layout che circonda le textView necessario per disegnare il bordo
        // delle celle
        LinearLayout container = new LinearLayout(this.context);

        container.setPadding(TABLE_BORDER, TABLE_BORDER, 0, 0);
        container.setBackgroundColor(Color.BLACK);

        TextView textView = new TextView(this.context);

        textView.setPadding(TABLE_TEXT_PADDING, TABLE_TEXT_PADDING, TABLE_TEXT_PADDING, TABLE_TEXT_PADDING);
        textView.setBackgroundColor(Color.WHITE);
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
                LinearLayout.LayoutParams.MATCH_PARENT);
        textView.setLayoutParams(params);

        if (tabHeader) {
            textView.setTypeface(Typeface.DEFAULT_BOLD);
            textView.setBackgroundColor(this.context.getResources().getColor(R.color.light_grayish_orange));
        }
        textView.setText(str);
        container.addView(textView);

        return container;
    }


}

我看到有关此的其他问题,但在这种情况下我不完全了解这种行为。

克莱里斯-谨慎乐观-

在类名上附加通用参数(尖括号中的内容)表示Java您希望类的用户能够指定所涉及的类型,并且您将这些名称用作“变量名”这些用户选择的类型。例如,请参见,Map<K,V>其中KV代表Map的键和值的类型当您将其LinearLayout列为类型参数时,编译器认为您只是将其用作用户可以选择的其他某个类的占位符,并且它不知道如何构造一个。

您想让具体的类扩展使用泛型的类,但是您知道要在其中填充的特定类型,因此您不必将类型参数放在自己的类上,而只是放在要使用的类上。例如,如果您正在编写MapStringIntegers映射s的自定义,那么您会说public class MyMap implements Map<String, Integer>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

类型参数“ T”必须为类类型

来自分类Dev

预期类型参数“ T”,找到“&T”

来自分类Dev

T和List [T]的类型参数边界

来自分类Dev

JAVA:类型参数隐藏类类型

来自分类Dev

泛型类型参数隐藏类型

来自分类Dev

通用类型 'ElementRef<T, any>' 需要 2 个类型参数

来自分类Dev

ILogger 类型的支持字段,但 ILogger<T> 类型的注入参数

来自分类Dev

List <T>需要'1'类型的参数

来自分类Dev

通用类型<T>参数的函数名前

来自分类Dev

力<T | 空| undefined>函数参数的类型

来自分类Dev

通用类::类型参数<T>属性继承

来自分类Dev

类型“ T”不能用作通用类型或方法中的类型参数“ T”

来自分类Dev

类型“ Partial <T>”的参数不能分配给类型“ T”的参数

来自分类Dev

类型为“ const wchar_t”的C ++参数*与类型为“ wchar_t”的参数不兼容

来自分类Dev

错误,更高种类的类型Scala:类型参数不符合。类型T的边界比类型T的声明边界更严格

来自分类Dev

Rust中意外的T vs&T作为类型参数

来自分类Dev

打字稿通用类型参数:T vs T扩展{}

来自分类Dev

类型不能在通用类型或方法中用作类型参数“ T”-为什么?

来自分类Dev

当在结构定义中明确指定类型时,无法推断类型参数T的类型

来自分类Dev

托管类类型作为类型参数T的类型(错误C2670)

来自分类Dev

类型参数T#1不在类型变量T#2的范围内

来自分类Dev

类型参数T#1不在类型变量T#2的范围内

来自分类Dev

类型参数'System.Net.Http.Headers.MediaTypeHeaderValue'违反了类型参数'T'的约束

来自分类Dev

警告:格式“%s”需要“char *”类型的参数,但参数 2 的类型为“__dev_t”[-Wformat=]

来自分类Dev

WrappedArray 集:类型参数 [Int] 不符合方法空的类型参数边界 [T <: AnyRef]

来自分类Dev

类型参数E隐藏类型E。泛型模板对类

来自分类Dev

引用抽象类型成员隐藏的通用类型参数

来自分类Dev

引用由抽象类型成员隐藏的通用类型参数

来自分类Dev

该类型不能用作通用类型或方法'BaseController <T>'中的类型参数'T'。没有隐式引用

Related 相关文章

  1. 1

    类型参数“ T”必须为类类型

  2. 2

    预期类型参数“ T”,找到“&T”

  3. 3

    T和List [T]的类型参数边界

  4. 4

    JAVA:类型参数隐藏类类型

  5. 5

    泛型类型参数隐藏类型

  6. 6

    通用类型 'ElementRef<T, any>' 需要 2 个类型参数

  7. 7

    ILogger 类型的支持字段,但 ILogger<T> 类型的注入参数

  8. 8

    List <T>需要'1'类型的参数

  9. 9

    通用类型<T>参数的函数名前

  10. 10

    力<T | 空| undefined>函数参数的类型

  11. 11

    通用类::类型参数<T>属性继承

  12. 12

    类型“ T”不能用作通用类型或方法中的类型参数“ T”

  13. 13

    类型“ Partial <T>”的参数不能分配给类型“ T”的参数

  14. 14

    类型为“ const wchar_t”的C ++参数*与类型为“ wchar_t”的参数不兼容

  15. 15

    错误,更高种类的类型Scala:类型参数不符合。类型T的边界比类型T的声明边界更严格

  16. 16

    Rust中意外的T vs&T作为类型参数

  17. 17

    打字稿通用类型参数:T vs T扩展{}

  18. 18

    类型不能在通用类型或方法中用作类型参数“ T”-为什么?

  19. 19

    当在结构定义中明确指定类型时,无法推断类型参数T的类型

  20. 20

    托管类类型作为类型参数T的类型(错误C2670)

  21. 21

    类型参数T#1不在类型变量T#2的范围内

  22. 22

    类型参数T#1不在类型变量T#2的范围内

  23. 23

    类型参数'System.Net.Http.Headers.MediaTypeHeaderValue'违反了类型参数'T'的约束

  24. 24

    警告:格式“%s”需要“char *”类型的参数,但参数 2 的类型为“__dev_t”[-Wformat=]

  25. 25

    WrappedArray 集:类型参数 [Int] 不符合方法空的类型参数边界 [T <: AnyRef]

  26. 26

    类型参数E隐藏类型E。泛型模板对类

  27. 27

    引用抽象类型成员隐藏的通用类型参数

  28. 28

    引用由抽象类型成员隐藏的通用类型参数

  29. 29

    该类型不能用作通用类型或方法'BaseController <T>'中的类型参数'T'。没有隐式引用

热门标签

归档