Questions tagged «static»

静态是一些编程语言中使用的术语,用于定义未绑定到任何特定对象实例的函数或数据存储区域(字段)。在大多数情况下,如果使用此标签,则应与特定的编程语言标签结合使用。

6
Java静态初始化程序线程安全吗?
我正在使用静态代码块来初始化我拥有的注册表中的某些控制器。因此,我的问题是,我可以保证在首次加载该类时,该静态代码块仅被绝对调用一次吗?我知道我不能保证何时会调用此代码块,我猜是在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) { // ... } }

9
为什么将静态方法视为方法?
我正在为某门课程的一些代码编写解释,并且偶然使用了这些单词method并且function可以互换使用。我决定回过头来修正措辞,但在我的理解上遇到了一个漏洞。 据我了解,子例程是一个function如果它不作用于一个类的实例(其作用仅限于其显式输入/输出),并且是一个method如果它作用于一个类的实例(它可能带有消除导致实例不纯的副作用)。 关于这个话题,这里有很好的讨论。请注意,根据接受的答案的定义,静态method实际上应该是一个函数,因为永远不会隐式传递实例,并且它无法访问任何实例的成员。 有了这个主意,静态不应该methods是函数吗? 根据它们的定义,它们不作用于类的特定实例;他们只是因为关系而“束缚”在班上。我见过一些外观不错的站点,尽管它们将静态子例程称为“方法”(Oracle,Fredosaurus,ProgrammingSimplified),所以它们要么都忽略了术语,要么我就漏掉了一些东西(我猜是后者) 。 我想确保我使用的措词正确。 有人可以清除吗?

8
Java:静态类?
我有一个充满实用程序功能的类。实例化它的实例没有语义,但是我仍然想调用它的方法。处理此问题的最佳方法是什么?静态课?抽象?
130 java  class  oop  static  utility 


5
静态类成员上未解析的外部符号
简单地说: 我有一个主要由静态公共成员组成的类,因此我可以将仍然必须从其他类/函数调用的相似函数组合在一起。 无论如何,我在类的公共范围内定义了两个静态的无符号char变量,当我尝试在同一类的构造函数中修改这些值时,在编译时出现“无法解析的外部符号”错误。 class test { public: static unsigned char X; static unsigned char Y; ... test(); }; test::test() { X = 1; Y = 2; } 我是C ++的新手,所以轻松一点。我为什么不能这样做?
129 c++  class  static  members 


7
最终静态方法的行为
我一直在使用静态方法修改器,并且遇到了奇怪的行为。 众所周知,静态方法不能被覆盖,因为它们与类而不是实例相关联。 因此,如果我具有以下代码段,则可以正常编译 //Snippet 1 - Compiles fine public class A { static void ts() { } } class B extends A { static void ts() { } } 但是,如果我在类A中包含了对静态方法的final修饰符,则编译失败 ,B中的ts()无法覆盖A中的ts();覆盖的方法是static final。 当根本无法覆盖静态方法时,为什么会发生这种情况?
123 java  methods  static  final 

2
如何使用C#6“使用静态”功能?
我正在看C#6 中的几个新功能,特别是 “使用静态”。 using static是一种新的using子句,可让您将类型的静态成员直接导入作用域。 (博客文章的底部) 根据我发现的一些教程,该想法如下所示, 而不是: using System; class Program { static void Main() { Console.WriteLine("Hello world!"); Console.WriteLine("Another message"); } } Console使用使用静态类的新C#6功能,可以省略重复的语句: using System.Console; // ^ `.Console` added. class Program { static void Main() { WriteLine("Hello world!"); WriteLine("Another message"); } // ^ `Console.` removed. } 但是,这似乎不适用于我。我在using声明中出现错误,说: “ using …

4
如何在静态方法中实例化非静态内部类?
我有以下代码: public class MyClass { class Inner { int s, e, p; } public static void main(String args[]) { Inner in; } } 到目前为止,代码还不错,但是我无法像in = new Inner()显示的那样在main方法中实例化“ in” non static field cannot be referenced in static context。 我该怎么做?我不想使我的Inner课堂静止。


8
为什么PHP 5.2+不允许抽象静态类方法?
在PHP 5.2中启用严格警告之后,我看到了一个项目中的大量严格标准警告,这些项目最初编写时没有严格警告: 严格标准:静态函数 Program :: getSelectSQL()在Program.class.inc中不应抽象 有问题的函数属于抽象父类Program,并且被声明为抽象静态,因为它应在其子类(例如TVProgram)中实现。 我确实在这里找到了对此更改的引用: 删除了抽象静态类函数。由于疏忽大意,PHP 5.0.x和5.1.x允许在类中使用抽象静态函数。从PHP 5.2.x开始,只有接口可以拥有它们。 我的问题是:有人可以清楚地解释为什么PHP中不应该有一个抽象的静态函数吗?
121 php  oop  static  abstract 

4
Python中的实例变量与类变量
我有Python类,在运行时我只需要一个实例,因此每个类仅一个属性,而每个实例仅具有一个属性就足够了。如果将有多个实例(不会发生),则所有实例都应具有相同的配置。我不知道以下哪个选项会更好或更“惯用” Python。 类变量: class MyController(Controller): path = "something/" children = [AController, BController] def action(self, request): pass 实例变量: class MyController(Controller): def __init__(self): self.path = "something/" self.children = [AController, BController] def action(self, request): pass

7
静态索引器?
Наэтотвопросестьответына 堆栈溢出нарусском:Перегрузкаиндексаторастатическогокласса 为什么在C#中不允许使用静态索引器?我认为没有理由不应该允许使用它们,而且它们可能非常有用。 例如: public static class ConfigurationManager { public object this[string name] { get => ConfigurationManager.getProperty(name); set => ConfigurationManager.editProperty(name, value); } /// <summary> /// This will write the value to the property. Will overwrite if the property is already there /// </summary> /// <param name="name">Name of the property</param> /// …

5
Java中的空引用上的静态字段
staticJava中的成员(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。该代码如何工作?
119 java  static 

13
C函数内部的静态变量
什么将被打印出来?6 6或6 7?又为什么呢 void foo() { static int x = 5; x++; printf("%d", x); } int main() { foo(); foo(); return 0; }
119 c  static 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.