问题标签 [unchecked-cast]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
303 浏览

java - 不使用泛型对观察者模式进行强制转换

我正在寻求实现一个主题观察者模式,其中主题在通知时向观察者提供自己。

然而,实际上,这项工作,编译器在线上给出了Unchecked cast警告observer.update((T)this);

当阅读一点关于此的内容时,编译器是正确的(出乎意料),它甚至被认为是臭代码,因为您可以编写实际触发ClassCastException的代码。

现在我正在寻找一种不臭且坚如磐石的解决方案。然而,观察者不需要寻找它正在观察的主题的想法是我非常喜欢的。另外,我真的不喜欢观察者需要自己在他们的update(). 你对如何使用这个有什么建议吗?


编辑

我的观察者被声明为这样的接口:

0 投票
2 回答
207 浏览

java - Java 未经检查强制转换为类型参数警告,尽管它是

考虑你有这个列表:

它包含一堆 AbstractXmlElement 子类的对象,并且您想要添加一个方法来从该列表中过滤特定子类的对象。为此,我创建了以下方法:

然而 (E) e 导致 UncheckedCast 警告。我想知道这究竟是一个未经检查的强制转换,以及抑制这个警告是否安全,因为那些不是 E 实例的对象在强制转换之前被过滤掉了。这意味着,据我所知,演员阵容永远不应该失败

0 投票
3 回答
170 浏览

java - 使用泛型删除未经检查的强制转换警告

我刚接触 Java 的泛型,所以我为自己建立了一个小项目。我想制作一个向量/点,您可以在其中指定Number(例如Double,、、IntegerLong)。

我最终得到了一个像样的类对象,但是注意到有关方法的一些问题。

最后一个方法,即加数方法,会引发未经检查的强制转换警告。在我做了一些研究之后,我发现它的行为很奇怪,因为我对泛型比较陌生,无法正确排除故障。

如何return (T) bd;创建警告?T必须是 a 的一个实例Number,所以它应该可以转换为 a BigDecimal,对吧?

所以我创建了我的小测试方法,

它工作得很好,打印出来2.0 5.74.2 9.6.

那么问题是当我使用来自 的方法时Double,例如Double#isNaN(). 然后它抛出 ClassCastException, Exception in thread "main" java.lang.ClassCastException: java.base/java.math.BigDecimal cannot be cast to java.base/java.lang.Double

这似乎与人们遇到的其他问题很常见,但是,尽管查看了资源,但我不明白为什么使用这些Double方法会引发错误。对象应该是Double演员后的,对吧?

0 投票
4 回答
18204 浏览

java - 不安全或未经检查的操作警告

在一个应用程序中,我使用 SharedPrefernces 来保存/加载(序列化/反序列化)一些对象。

这是反序列化代码:

但是每当我编译这个项目时,这行:

导致包含此方法的类“使用未经检查或不安全的操作”的警告。

如何摆脱此警告或更改我的代码以更安全?

0 投票
2 回答
174 浏览

java - 从 X 到扩展 X 的泛型类型的未经检查的强制转换

我的任务@SupressWarning是在我们的代码库中删除尽可能多的 s,但我不确定如何解决这个特定问题。

我有这个返回对象的外部方法,以及我想将对象转换为Serializable的泛型类型。T extends Serializable

这是代码的简化版本:

是否可以在不产生未经检查的强制转换警告的情况下执行此转换(假设无法更改外部方法)?

这是Java 8

0 投票
0 回答
50 浏览

java - 避免在从 Enum 填充的 ChoiceBox 中进行未经检查的强制转换

我编写了以下自定义 ChoiceBox,它从实现下面我的接口 DisplayName 的通用 Enum 填充自身:

基本上,一切正常,编译器也对第一个和第三个构造函数感到满意。但是,在我看来,第三个构造函数中的两个参数是不必要的:传递默认值就足够了,因为它已经包含了类信息。

所以,这就是我试图用第二个构造函数来实现的,但是我收到一个警告,说我做了一个未经检查的演员表。有没有办法解决/解决这个问题(除了抑制警告)?

0 投票
1 回答
6052 浏览

java - 在地图上未经检查的演员(JSON 与 Jackson 转换为 Map)

在 Java 8 中,我想将 JSON 字符串转换为映射,并对键应用“复杂”转换。例如,“复杂”转换将只是小写转换。输入 JSON 中的值可以是字符串或嵌套的 JSON 对象。我的代码实际上正在运行,但我很难修复unchecked cast警告。

例子

示例 JSON 输入 ( String) :

所需输出 ( Map) :

1. JSON 字符串 -> 映射

对于那部分,我使用了 Jackson (2.9.8) 并定义了以下函数:

由于值可以是字符串或 JSON 对象,因此该函数的返回类型是Map<String, Object>. 另请注意, readValue(在ObjectMapper类中)使用泛型,其签名是:

2. 映射 -> 带有转换键的映射(例如:小写)

我定义了以下功能:

为了处理嵌套地图,这个函数是递归的。但由于它需要一个Map<String, Object>as 参数,我必须强制value转换Map<String, Object>为递归调用该方法。

3. 将所有内容放在一起

此代码按预期工作并打印:

{key1=value1, key2={key2.1=value2.1}}

但是函数中的这一行transformKeys

产生警告:

警告很清楚,我理解(编译器不知道是否value真的是 的实例Map<String, Object>),但是有没有办法摆脱它?

@SuppressWarnings请不要,也不要-Xlint:none):D

我觉得返回Map<String, Object>fromconvertJsonStringToMap不是将 JSON String 转换为 Map 的最干净的方法,但我找不到其他方法来处理 Jackson。

0 投票
4 回答
320 浏览

java - Unchecked cast from generic type to the same type

The following code generates a warning Unchecked cast: 'T' to 'U' in IntelliJ IDEA:

This doesn't make sense to me, since T and U are defined as the same type. What is the problem?

0 投票
1 回答
1053 浏览

android - 有没有办法在不使用 Kotlin 中的 Supress 的情况下处理未经检查的强制转换警告?

我在我的 android 应用程序中使用 ViewModelFactory 将一些数据从 Fragment 传递给我的 ViewModel。我收到未经检查的演员表警告。如果我使用抑制,警告就会消失。我想知道有没有办法在不使用 Supress("UNCHECKED_CAST") 的情况下处理这个问题

我用来创建 ViewModelFactory 的代码

因为 T 收到警告。

0 投票
2 回答
39 浏览

android - 我相信按钮约束问题

希望周末一切顺利。我正在处理登录和注册页面,很难找到解决未经检查的强制转换错误的方法,经过检查,xml 代码似乎一切正常。挑战真的很令人沮丧,这是代码

爪哇代码

xml代码

任何帮助将不胜感激