2012-11-01 94 views
1

可能重复:
#ifdef #ifndef in Java#ifdef等效于Java?

我想用这样的事情来实现我的Android代码的一些调试消息:

private static final boolean DEBUG = false; 

if (DEBUG) { 
// some code 
} 

然而,在编译我不断收到“非法开始表达”的错误。最终的布尔工作,但既不是静态的也不是私人的工作。

我在方法中声明了DEBUG变量。如果有一种方法可以使这个全局性的,以便在同一个Java文件中的所有内容都将看到它,而不是我需要在每个需要它的方法中声明它,也会感激。

谢谢!

+0

只是把变量放在一个方法之外,一切都可以看到它。 – Serdalis

+0

你不能在Java中创建全局变量,它都需要成为某个类作用域的一部分。将DEBUG定义为该类的一个私有静态最终成员,使该类有权读取它。这意味着班级中的每个方法都可以读取成员。 – breezee

回答

5

如果您希望该变量对该类中的所有方法都可见,则必须在类级别声明该变量。

如果你这样做的方法里面如下:

private static final boolean DEBUG = false; 

的问题是修饰privatestatic没有一个方法内不允许。


其实,你应该使用记录器来达到这种目的。

+5

+1用于推荐使用记录器 – LanguagesNamedAfterCofee

+0

编号有很多次您不希望将调试代码编译到生产代码中。 DEBUG测试确保它不会。 – RichieHH

1

只需在类的顶部声明它(方法之外,但仍然在类中)。

public class MyClass { 
    private static final boolean DEBUG = false; 
    ... 
} 

这样,您就可以从每一个你在MyClass定义方法访问DEBUG。您会收到一个错误,因为方法中定义变量时,你不能使用private/static改性剂,只能用类字段使用它们(这同样适用于publicprotected - 你可以使用final任何地方,不过)。