问题标签 [static-members]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
9 回答
51063 浏览

java - 如何序列化 Java 类的静态数据成员?

我们序列化对象的时候,静态成员是不序列化的,但是如果我们需要这样做,有什么办法吗?

0 投票
7 回答
6969 浏览

c++ - C ++静态常量变量和破坏

我在一个简单的 C++ 类中遇到了一个奇怪的行为。

类A.h

类A.cpp

主文件

我预计访问冲突或类似的事情,但我从没想过静态 const 字符串的内容会改变。这里有没有人能很好地解释该代码中发生了什么?

谢谢,诺伯特

0 投票
5 回答
9648 浏览

c++ - C++ 中类静态变量的生命周期是多少?

如果我有一个名为 Test ::

staticVector什么时候被构造,什么时候被破坏?

是实例化 Test 类的第一个对象,还是像常规静态变量一样?

澄清一下,在阅读《编程语言概念》(Sebesta Ch-5.4.3.1)后我想到了这个问题,它说::

请注意,当静态修饰符出现在 C++、Java 和 C# 中的类定义中的变量声明中时,它与变量的生命周期无关。在这种情况下,这意味着变量是类变量,而不是实例变量。保留字的多次使用可能会使学习该语言的人感到困惑。

你明白了吗?:(

0 投票
6 回答
2270 浏览

c# - 如何在静态成员中获取类类型的 System.Type 实例?

我在一个类中有一个公共静态属性。该类应用了一些自定义属性。我想访问静态属性中的属性。

在非静态成员中,我可以使用 this.GetType() 获取当前类的类型,但是如何在类的静态成员中执行此操作?

请注意..

  • 由于继承问题,我不想使用typeof(typename) 。[我将把这个属性继承到派生类。]。

  • 我也不想使用泛型

编辑

这是我的目标。

我有一个名为 EntityBase 的抽象基类。我所有的实体都派生自这个类。每个实体还带有一个名为 TableMappingAttribute 的自定义属性,它让我知道它在运行时引用/映射到的表。我已经在 EntityBase 中有一个属性,它返回实体的映射表名。

我总是需要一个实体实例来访问 TableName 属性。我希望在某个时候静态访问此属性,例如 MyEntity.TableName。我的项目中有大量实体。我希望将此静态属性添加到 EntityBase 类本身中。所以我必须在运行时发现类型。如何在 EntityBase 类本身中执行此操作?

谢谢。

0 投票
5 回答
3124 浏览

c# - 静态成员不保持赋值

好的,我有一个静态类,它有两个静态成员,一个字符串和一个布尔值。
公共静态方法根据传入的参数状态为这些成员分配值。

然后调用处理静态成员的私有静态方法。

问题是,虽然布尔值保留了它在公共函数中设置的值,但字符串没有;它默认回到它的初始化值。为什么是这样?
简化代码如下。

0 投票
6 回答
4898 浏览

c++ - 为什么静态数据成员可能不会被初始化?

我正在尝试在加载时向工厂注册一堆类。我的策略是利用静态初始化来确保在 main() 开始之前,工厂已准备就绪。当我动态链接我的库时,这种策略似乎有效,但当我静态链接时无效;当我静态链接时,只有我的一些静态数据成员被初始化。

假设我的工厂生产汽车。我有 CarCreator 类可以实例化少量汽车,但不是全部。我希望工厂收集所有这些 CarCreator 类,以便寻找新车的代码可以进入工厂,而无需知道谁将进行实际构建。

所以我有

CarTypes.hpp

我的工厂.hpp

我的工厂.cpp

...

然后我会有特定的汽车和特定的汽车创造者:

Miata.cpp

...

重申一下:动态链接我的库,MiataCreator::registered 将被初始化,静态链接我的库,它不会被初始化。

使用静态构建,当有人到工厂请求 Miata 时,miata 元素car_creator_map将指向 NULL,程序将退出。

私有静态整数数据成员有什么特别之处,它们的初始化会以某种方式被跳过吗?是否仅在使用类时才初始化静态数据成员?我的 CarCreator 类没有在任何头文件中声明;它们完全存在于 .cpp 文件中。编译器是否有可能内联初始化函数并以某种方式避免调用 MyFactory:: factory_register

这个注册问题有更好的解决方案吗?

在单个函数中列出所有 CarCreators 并在工厂中显式注册每个 CarCreators 并确保调用该函数不是一种选择。特别是,我想将几​​个库链接在一起并在这些单独的库中定义 CarCreators,但仍然使用单个工厂来构造它们。

...

以下是我期待的一些回应,但不能解决我的问题:

1)你的单身工厂不是线程安全的。a) 没关系,我只使用一个线程。

2) 当您的 CarCreators 正在初始化时,您的单例工厂可能未初始化(即您有一个静态初始化失败) a) 我通过将单例实例放入函数中来使用单例类的安全版本。如果这是一个问题,如果我在方法中添加了一个打印语句,我应该会看到输出MiataCreator's::register_with_factory:我没有。

0 投票
4 回答
8365 浏览

c# - 获取静态字段的值

我有以下课程:

我知道我可以Pages.Home静态使用,但我的问题是有原因的。

我希望有一个可以这样调用的方法:

等等

可能吗?

谢谢,戴夫

0 投票
2 回答
3319 浏览

java - Objective c - 静态成员和常量

有什么区别:

? 另外,Java 的final和 Objective C (C) 的const有什么区别?对于以下情况,我应该在哪里声明静态类成员:1.当只有类需要它时**2.**它在哪里是其他类可以读取的属性?我已经知道#define,但这对对象不利,因为它每次都会创建新对象。谢谢!

0 投票
4 回答
7581 浏览

java - Java中静态类变量的作用域

我在日志记录类中定义了一个静态对象,大致如下:

根据我的参考书,这意味着属性对象由我的类的所有实例共享。

我觉得这个定义不够充分。我正在编写一个在我们项目的每个应用程序中多次调用的类。

此外,我们的项目使用在同一个 tomcat 容器中运行的多个 Web 服务。每个 Web 服务可能有多个线程。

运行在主机上的 Java 虚拟机还可以运行一个或多个 Web 服务客户端应用程序,这些应用程序在 tomcat 外部运行。

因此,根据这个定义,我可能让 tomcat 运行多个带有线程的 Web 服务,每个都有多个对象,这些对象可能包含我的类的一个实例。

也可能有一个或两个 Web 客户端在 tomcat 之外运行,但在同一个 JVM 中。我的类的所有这些实例会共享相同的属性对象吗?这将使它成为 JVM 范围的。

如果静态对象不是JVM 范围的,有谁知道每个对象会存在于哪个级别?每个 tomcat 容器一个?每个 Web 服务一个,每个独立 Web 服务客户端应用一个?

原因:当我更新我的属性时,我从 java.util.Properties 得到一个 java.lang.ConcurrentUpdateException。

当我的类更新它时,我使用静态布尔变量来“锁定”属性对象,但这并不能阻止异常的发生。

这使我相信我的类中使用的静态对象可能与 java.util.Properties 中使用的对象不在同一范围级别...但这只是一个猜测。

谢谢你的帮助。

0 投票
2 回答
5016 浏览

php - OOP 中的静态和动态变量/方法是什么?

我试图更好地理解 OOP 中的基本概念。面向对象编程中的静态和动态变量和方法是什么?例如,使用 $this 与使用双冒号 (::) 有什么区别?

$this ($this->a_method())

  • 好处: ?。
  • 缺点:? ...“this”不是自记录的,如:$this->method_from_an_extended_class().

双冒号(someclass::a_method())

  • 好处: ?
  • 缺点:?