引发RuntimeException的Java函数

引发RuntimeException的Java函数,java,android,android-intent,Java,Android,Android Intent,我正在看一些代码,这让我很困惑,因为我发现函数的目的只是抛出一个错误,这很奇怪,尽管我确信有一些原因它是有用的(至少我认为它是这样做的)。我的理解是,如果将String类型的参数传递到函数putExtra中,则抛出RuntimeExeption。我的理解正确吗?下面是代码 @RecentlyNonNull public Intent putExtra(String name, String value) { throw new RuntimeException("Stub!"); }

我正在看一些代码,这让我很困惑,因为我发现函数的目的只是抛出一个错误,这很奇怪,尽管我确信有一些原因它是有用的(至少我认为它是这样做的)。我的理解是,如果将
String
类型的参数传递到函数
putExtra
中,则抛出
RuntimeExeption
。我的理解正确吗?下面是代码

@RecentlyNonNull
public Intent putExtra(String name, String value) {
    throw new RuntimeException("Stub!");
}

public static final String ACTION_ID = "ACTION_ID";
Intent actionIntent = new Intent(this, LoginActivity.class);
actionIntent.putExtra(Constants.ACTION_ID, userId); //Where userId is also a string

如果我的理解是正确的,那么背后的原因是什么?如果
putExtra
函数的任何一个参数不是
String
类型,不会自动抛出错误吗?

这些只是假的实现,只有Java编译器知道存在哪些API。实际实现在设备上。例如,可以找到
Intent
的实现。

这些只是假的实现,只有Java编译器知道存在哪些API。实际实现在设备上。例如,可以找到
Intent
的实现。

RuntimeExeption
可能还有其他原因(请添加堆栈跟踪)。即使在查看方法签名时,也不总是
字符串值
。第一个参数必须是
String
,因为它是名称,而第二个参数是值,可以有各种类型(不是任何类型)。请参阅,这可能更能解释它崩溃的原因。

RuntimeExeption
可能还有其他原因(请添加堆栈跟踪)。即使在查看方法签名时,也不总是
字符串值
。第一个参数必须是
String
,因为它是名称,而第二个参数是值,可以有各种类型(不是任何类型)。请看,这可能更能解释它崩溃的原因。

它与android相关,对吗?它看起来像是一个存根(有效声明但不做任何事情),而该异常是一个警告,告诉用户不要使用它。我的最佳选择是,一旦它被实现,它将不再抛出该警告。由于注释,我敢打赌直到最近它还返回null,现在它反而抛出该异常。有时API添加此类方法以保持向后兼容,同时明确此类方法必须在子类中重写。您是否有可能使用IDE来查看某个平台类的实现?也就是说,这是Android框架或库的一部分,而不是您自己项目的一部分?IDE通常会将类似的内容放入实际代码中,而不是真正的代码中。只能通过传递字符串来调用它。所以它的目的是不被调用,并通过抛出运行时异常发出警告。它需要被重写,因为它与android相关,对吗?它看起来像是一个存根(有效声明但不做任何事情),该异常是一个警告,告诉用户不要使用它。我的最佳选择是,一旦它被实现,它将不再抛出该警告。由于注释,我敢打赌直到最近它还返回null,现在它反而抛出该异常。有时API添加此类方法以保持向后兼容,同时明确此类方法必须在子类中重写。您是否有可能使用IDE来查看某个平台类的实现?也就是说,这是Android框架或库的一部分,而不是您自己项目的一部分?IDE通常会将类似的内容放入实际代码中,而不是真正的代码中。只能通过传递字符串来调用它。所以它的目的是不被调用,并通过抛出运行时异常发出警告。它需要被覆盖