给定以下C#代码,其中以两种不同的方式调用Dispose方法:
class Disposable : IDisposable
{
public void Dispose()
{
}
}
class Program
{
static void Main(string[] args)
{
using (var disposable1 = new Disposable())
{
Console.WriteLine("using");
}
var disp
在下面的方法中,编译器会抱怨返回语句丢失,即使在方法中只有一条路径,而且它包含一个return语句。抑制错误需要另一个return语句。
public int foo() {
if (true) {
return 5;
}
}
既然是,它为什么不同时处理这种情况呢?链接的问题暗示,但没有提供这一具体情况的细节。
我有一个名为StaticInitializer.class的类文件,它成功地混淆了。当我解压缩它的时候,我得到了下面的结果,其中IDE给出了编译器错误"Cannot return from within an initializer“。删除"return“语句可以解决这个问题。但实际上,我想知道的是,如果类文件在静态初始化器中有return语句,那么它是如何正确工作的。
java文件的编译和运行阶段之间是否存在不匹配,混淆检测并使用它们作为混淆的一种方式?
反编译代码
public class StaticInitializer {
static {
我提取了某人的APK (Android app)来查看Java源代码,并看到了很多return;代码,甚至在void方法上也是如此。
例如:
public void doSomething(){
do{
return; //This line makes the code below unreachable and can't compile in Eclipse
switch(num){
...
default:
return;
}
}while(...)
...
}
为什么这个应用程序在我的手机上运行得