Tag: 静态

为什么静态初始化块中不允许有一个合格的static finalvariables?

情况1 class Program { static final int var; static { Program.var = 8; // Compilation error } public static void main(String[] args) { int i; i = Program.var; System.out.println(Program.var); } } 案例2 class Program { static final int var; static { var = 8; //OK } public static void main(String[] args) { System.out.println(Program.var); } } […]

C中函数的静态variables

void foo() { static int x = 5; x++; printf("%d", x); } int main() { foo(); foo(); return 0; } 什么会打印出来? 6 6或6 7 为什么?

在ASP.NET中使用静态variables而不是应用程序状态

我在飞机上使用静态variables,而不是ASP.NET中的应用程序状态,我想知道这是否是正确的方法: [Global.asax.cs] … public class Global : System.Web.HttpApplication { void Application_Start(object sender, EventArgs e) { // Code that runs on application startup } … private static Dictionary<string, object> cacheItems = new Dictionary<string, object>(); private static object locker = new object(); public static Dictionary<string, object> CacheItems { get { lock (locker) { return cacheItems; } } […]

为什么Mockito不能模拟静态方法?

我在这里读了几个关于静态方法的线程,我想我明白滥用/过度使用静态方法会导致的问题。 但是我没有真正明白为什么很难嘲讽静态方法。 我知道其他嘲笑的框架,如PowerMock,可以做到这一点,但为什么不能Mockito? 我读过这篇文章 ,但作者似乎对static这个词虔诚,也许这是我的不理解。 一个简单的解释/链接将是伟大的。

Java静态初始化器是否线程安全?

我正在使用静态代码块来初始化我在registry中的一些控制器。 所以我的问题是,我可以保证,这个静态代码块将只会被绝对调用一次,当第一次加载类? 我知道我不能保证什么时候这个代码块将被调用,我猜它是什么时候Classloader第一次加载它。 我意识到我可以在静态代码块的类上同步,但我的猜测是这实际上是什么发生呢? 简单的代码示例是; class FooRegistry { static { //this code must only ever be called once addController(new FooControllerImpl()); } private static void addController(IFooController controller) { // … } } 或者我应该这样做; class FooRegistry { static { synchronized(FooRegistry.class) { addController(new FooControllerImpl()); } } private static void addController(IFooController controller) { // … } }

什么时候在C#中调用静态构造函数?

当我有包含一个静态构造函数的类,当包含该类的程序集是第一次加载或当该类的第一个引用命中时调用该构造函数?

如何在静态方法中实例化非静态内部类

我有以下一段代码: public class MyClass{ class Inner{ int s,e,p; } public static void main(String args[]){ Inner in; } } 用这部分代码是好的,但我不能像main in=new Inner()方法中实例化'in',因为它显示了non static field cannot be referenced in static context 。 我能做到的方式是什么? 我不想让我的内部类是静态的。

在C#中使用静态variables是什么? 何时使用它? 为什么我不能在方法中声明静态variables?

我已经在C#中search静态variables,但我仍然没有得到它的用途。 另外,如果我尝试在方法内部声明variables,它将不会授予我执行此操作的权限。 为什么? 我见过一些关于静态variables的例子。 我已经看到,我们不需要创build类的实例来访问variables,但是这不足以理解它的用途以及何时使用它。 第二件事 class Book { public static int myInt = 0; } public class Exercise { static void Main() { Book book = new Book(); Console.WriteLine(book.myInt);//shows error why its shows me error?cant i access the static variable by making the instance of a class? Console.ReadKey(); } }

Java中的空引用的静态字段

Java中的static成员( static字段或static方法)与它们各自的类而不是这个类的对象相关联。 以下代码尝试访问null引用上的静态字段。 public class Main { private static final int value = 10; public Main getNull() { return null; } public static void main(String[] args) { Main main=new Main(); System.out.println("value = "+main.getNull().value); } } 虽然main.getNull()返回null ,但它的工作原理和显示value = 10 。 这个代码是如何工作的?

弃用静态关键字…不再?

在C ++中,可以在翻译单元中使用static关键字来影响符号的可见性(variables或函数声明)。 在3092年,这是不赞成的: 附件D.2 [depr.static] 在命名空间范围内声明对象时,不推荐使用static关键字(见3.3.6)。 在n3225,这已被删除。 我能find的唯一文章是有些不正式的。 但是为了与C兼容(以及用C ++编译C程序的能力),它的确强调了这一点。 然而,直接编译一个C程序可能是一个令人沮丧的经验,所以我不确定是否值得考虑。 有谁知道它为什么被改变?