泛型强制转换报错 Unchecked cast: ‘java.lang.XXX‘ to ‘T‘

描述

在需要强制转换为泛型的时候,编辑器会提示警告

已经看到太多文章说忽略掉警告信息了,所以写了这篇文章
在这里插入图片描述
例如如下代码:

public <T extends Component> T getComponent(Entity e, Class<T> exampleClass)
{
    // 多余代码忽略
    T result = (T)store.get(e);
    return result;
}

解决方案

可以使用 Class.cast() 来替代强制转换

修改如下代码:

T result = (T)store.get(e);

修改成:

T result = exampleClass.cast(store.get(e));

Tips:
Class.cast() 转换失败会报 ClassCastException 异常,还是需要在强转之前对于数据类型进行判断

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,可以看出这是一个Android编程的问题,需要使用Bundle传递对象。在这个问题中,需要创建一个Person类,该类需要实现Serializable接口,以便在不同的Activity之间传递。在HobbyActivity中,需要创建一个ArrayList<Person>泛型集合,保存四个Person类的对象,并使用ListView显示姓名。当单击姓名时,需要进入MessageActivity,显示姓名、年龄和爱好。最终结果应该显示BMI计算器张三李四王五赵权。 具体步骤如下: 1. 创建Person类,该类需要实现Serializable接口,以便在不同的Activity之间传递。 2. 在HobbyActivity中,创建一个ArrayList<Person>泛型集合,保存四个Person类的对象,并使用ListView显示姓名。 3. 当单击姓名时,使用Intent传递该Person对象到MessageActivity中。 4. 在MessageActivity中,获取传递过来的Person对象,并显示姓名、年龄和爱好。 代码示例: 1. Person类的定义: ``` public class Person implements Serializable { private String name; private int age; private String hobby; public Person(String name, int age, String hobby) { this.name = name; this.age = age; this.hobby = hobby; } public String getName() { return name; } public int getAge() { return age; } public String getHobby() { return hobby; } } ``` 2. 在HobbyActivity中,创建ArrayList<Person>泛型集合,并使用ListView显示姓名: ``` ArrayList<Person> personList = new ArrayList<>(); personList.add(new Person("张三", 20, "篮球")); personList.add(new Person("李四", 22, "足球")); personList.add(new Person("王五", 25, "乒乓球")); personList.add(new Person("赵权", 18, "羽毛球")); ListView listView = findViewById(R.id.listView); ArrayAdapter<Person> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, personList); listView.setAdapter(adapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent intent = new Intent(HobbyActivity.this, MessageActivity.class); intent.putExtra("person", personList.get(position)); startActivity(intent); } }); ``` 3. 在MessageActivity中,获取传递过来的Person对象,并显示姓名、年龄和爱好: ``` TextView nameTextView = findViewById(R.id.nameTextView); TextView ageTextView = findViewById(R.id.ageTextView); TextView hobbyTextView = findViewById(R.id.hobbyTextView); Intent intent = getIntent(); Person person = (Person) intent.getSerializableExtra("person"); nameTextView.setText(person.getName()); ageTextView.setText(String.valueOf(person.getAge())); hobbyTextView.setText(person.getHobby()); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值