- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道为什么下面的代码有效:
public static void throwUnchecked(Exception e) {
TestGenericExceptionCast.<RuntimeException> doThrowUnchecked(e);
}
@SuppressWarnings("unchecked")
private static <T extends Exception> void doThrowUnchecked(Exception toThrow) throws T {
throw (T) toThrow;
}
public static void main(String[] args) {
throwUnchecked(new Exception());
}
为什么异常可以通过泛型转换为RuntimeException?
知道了:
根本没有转换发生,因为没有对象被分配给类型为 T 的东西。
编译器被骗了,再也看不出它是一个已检查的异常。
最佳答案
throw (T) toThrow;
并没有真正施展 toThrow
至 RuntimeException
.删除后,类型绑定(bind) <T extends Exception>
意味着实际发生的转换是 throw (Exception) toThrow;
,效果非常好。
但是,如果您将签名更改为:
private static <T extends RuntimeException> void doThrowUnchecked(Exception toThrow) throws T
它仍然会通过编译(因为 RuntimeException
是 Exception
的子类型),但是 throwUnchecked(new Exception());
会抛出 ClassCastException
,因为异常的运行时类型 - java.lang.Exception
- 不能转换为 java.lang.RuntimeException
.
如果这些方法的目的是将checked exception转换为unchecked exception,可以删除这些方法并替换
throwUnchecked(new Exception());
与
throw new RuntimeException (new Exception());
这会将已检查的异常包装在未检查的异常中。
关于java - 为什么 Java 泛型可以强制转换不可赋值的类型(Every Exception to RuntimeExecption)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30887176/
给定一个元素列表,如果每个元素都需要了解此列表中每个其他元素的状态,如何处理所有元素? 例如,在 Python 中实现它的直接方法可能是: S = [1,2,3,4] for e in S: fo
我在嵌套循环方面遇到问题。请看下面的 fiddle : http://jsfiddle.net/7znfmp9o/ 我希望每个部分都能获得视差效果,但是这里发生了一些奇怪的事情。 .each() 代码
好吧,伙计们,我正在尝试在另一个 for every row 循环中执行一个 for every row 循环,我对 mysql 真的很陌生,这是我的第一个触发器我有一个名为 Disponivel 的
我目前正在开发一个基于 Arc-Theme 的 GTK 主题。(你可以在这里看到我目前的进度:https://plus.google.com/u/0/100718986567621730640/pos
我将一个事件设置为某个月的 13 号,并每月重复一次。每个月都会正确地重复它。但是,当将其设置为某个月的 31 日时,它只会设置为 31 日的月份,并且如果它显示在“编辑”->“重复”->“每月重复”
我试图通过在 session 中存储数据来在每个 View 页面中显示记录的用户名。 但是我必须在每个函数中编写相同的两行..我正在获取用户数据,但是还有其他方法可以做到这一点吗?因为我认为重复相同
我需要每天从 8 点到 10 点到 10 点到 30 点每 10 分钟和 30 分钟运行一次任务: start at 8:10 -> 8:30 -> 9:10 -> .. -> 10:30 finis
我已经在文档中进行了一些搜索,并在网上花了一段时间,但找不到解决方案!我希望警报告诉我单击 .thumb 时它处于each() 的哪一次迭代。 EG:有六个.thumb,我点击数字3,浏览器弹出3!
谁能告诉我为什么循环在 5 条目之后没有停止? http://jsbin.com/ucuqot/edit#preview $(document).ready(function() { someA
我对实现 _.every() 有疑问。 我的代码在这里 _.every = function(collection, iterator) { if (collection.length =
我从面向对象编程开始我有以下问题:我开了一个新课然后我就从这门课开始现在,对于每个实例我想做一些事情我用 foreach 循环尝试过,但它不起作用......存在一些语法问题 这是类(class):
我尝试使用 jquery each() 函数在每次迭代后添加 0.5 增量。我必须在 li 上添加 animatoin-delay 属性,该属性的值应该增加 (0.5),以便我可以在文档加载时为它们设
首先看一下这段代码。示例我有 5 个具有必需类的输入字段。 var errMsg = "This is required!" $(function() { $(".required").each
因此,我正在尝试重新创建“every”方法,作为 Eloquent JavaScript 练习的一部分。我不明白为什么第二版不起作用(第一版有效)。 书上说“只有当谓词对数组的所有元素都返回真时,ev
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 6 年前。 Improve this qu
有人可以告诉我为什么这会返回 true 吗?它应该返回 false,因为在第一次迭代中 value[pre] === 0... 谢谢。 function truthCheck(collection,
我正在尝试使用 Array 的 .every 来查看数组中的项目是否是连续的(1、2、3、4、5)。为什么当其中的所有内容都是 true 时返回 false? const nums = [1, 2,
var arr=[]; var k; for(var i=0;i native loop 2: 0ms 嗯,现在有点太快了。也许 arr 应该更大: var arr=[]; for(var i=0;i
这是一些 Javascript 数组方法的常见问题。以下面为例: var numbers = new Array(12, 5, 8, 130, 44); function isBigEnough(el
这个问题已经有答案了: Arrow function without curly braces (9 个回答) When should I use a return statement in ES6
我是一名优秀的程序员,十分优秀!