問題タブ [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++ static const 変数と破棄

単純な C++ クラスで奇妙な動作に遭遇しました。

classA.h

classA.cpp

main.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を返すプロパティがすでにあります。

TableNameプロパティにアクセスするには、常にエンティティのインスタンスが必要です。MyEntity.TableNameのように、いつかこのプロパティに静的にアクセスしたいと思います。私のプロジェクトには大量のエンティティがあります。この静的プロパティをEntityBaseクラス自体に追加したいと思います。したがって、実行時に型を検出する必要があります。EntityBaseクラス自体でこれを行うにはどうすればよいですか?

Thnaks。

0 投票する
5 に答える
3124 参照

c# - 静的メンバーは割り当てられた値を保持しません

OK 文字列とブール値の 2 つの静的メンバーを持つ静的クラスがあります。
public static メソッドは、渡されたパラメーターの状態に基づいて、これらのメンバーに値を割り当てます。

次に、静的メンバーを処理するプライベート静的メソッドが呼び出されます。

問題は、ブール値がパブリック関数で設定された値を保持する一方で、文字列は保持されないことです。デフォルトで初期化された値に戻ります。どうしてこれなの?
簡略化したコードを以下に示します。

0 投票する
6 に答える
4898 参照

c++ - 静的データメンバーが初期化されないのはなぜですか?

ロード時に多数のクラスをファクトリに登録しようとしています。私の戦略は、静的初期化を利用して、main()が開始する前に、ファクトリが準備ができていることを確認することです。この戦略は、ライブラリを動的にリンクする場合は機能するようですが、静的にリンクする場合は機能しません。静的にリンクすると、静的データメンバーの一部のみが初期化されます。

私の工場が自動車を製造しているとしましょう。少数の車をインスタンス化できるCarCreatorクラスがありますが、すべてではありません。工場でこれらのCarCreatorクラスをすべて収集して、新しい車を探すコードが、実際の建設を誰が行うかを知らなくても工場に行くことができるようにしたいと思います。

だから私は持っています

CarTypes.hpp

MyFactory.hpp

MyFactory.cpp

..。

次に、特定の車と特定の車の作成者を紹介します。

Miata.cpp

..。

繰り返しになりますが、ライブラリを動的にリンクすると、MiataCreator :: registeredが初期化され、ライブラリを静的にリンクしますが、初期化されません。

静的ビルドでは、誰かがMiataを要求するためにファクトリに行くと、willのmiata要素はcar_creator_mapNULLを指し、プログラムは終了します。

プライベート静的積分データメンバーに、初期化が何らかの理由でスキップされるという特別なものはありますか?静的データメンバーは、クラスが使用されている場合にのみ初期化されますか?私のCarCreatorクラスはどのヘッダーファイルでも宣言されていません。それらは完全に.cppファイル内にあります。コンパイラが初期化関数をインライン化し、どういうわけかMyFactory ::の呼び出しを回避している可能性はありますfactory_registerか?

この登録の問題に対するより良い解決策はありますか?

すべてのCarCreatorを単一の関数にリストし、それぞれをファクトリに明示的に登録してから、関数が呼び出されることを保証するオプションはありません。特に、いくつかのライブラリをリンクし、これらの別々のライブラリでCarCreatorsを定義したいのですが、それでも単一のファクトリを使用してそれらを構築します。

..。

これが私が予想しているが私の問題に対処していないいくつかの応答です:

1)シングルトンファクトリはスレッドセーフではありません。a)関係ありませんが、私は単一のスレッドのみを使用しています。

2)CarCreatorsが初期化されているときにシングルトンファクトリが初期化されていない可能性があります(つまり、静的初期化の大失敗があります)a)シングルトンインスタンスを関数に入れることで、安全なバージョンのシングルトンクラスを使用しています。これが問題である場合、MiataCreator's::register_with_factoryメソッドにprintステートメントを追加すると、出力が表示されるはずです。そうではありません。

0 投票する
2 に答える
3319 参照

java - Objective c - 静的メンバーと定数

次の違いは何ですか:

? また、Java のfinalと Objective C (C) のconstの違いは何ですか? また、次のような状況では、どこで静的クラス メンバーを宣言する必要がありますか? #define については既に知っていますが、毎回新しいオブジェクトが作成されるため、オブジェクトには適していません。ありがとう!

0 投票する
4 に答える
7581 参照

java - Javaの静的クラス変数のスコープ

次の行に沿って、ロギングクラスで静的オブジェクトが定義されています。

私の参考書によると、これはプロパティオブジェクトが私のクラスのすべてのインスタンスによって共有されることを意味します。

この定義では不十分だと思います。プロジェクトの各アプリケーションで複数回呼び出されるクラスを作成しています。

さらに、私たちのプロジェクトでは、同じTomcatコンテナで実行されている複数のWebサービスを使用しています。各Webサービスには複数のスレッドが含まれる場合があります。

ホスト上で実行されているJava仮想マシンは、Tomcatの外部で実行される1つ以上のWebサービスクライアントアプリケーションを実行する場合もあります。

したがって、この定義により、Tomcatがスレッドを使用して複数のWebサービスを実行し、それぞれに複数のオブジェクトがあり、クラスのインスタンスが含まれている場合があります。

また、Tomcatの外部で、同じJVM内で実行されている1つまたは2つのWebクライアントが存在する場合もあります。私のクラスのこれらのインスタンスはすべて同じプロパティオブジェクトを共有しますか?これにより、JVM全体になります。

静的オブジェクトがJVM全体ではない場合、それぞれがどのレベルに存在するかを誰かが知っていますか?Tomcatコンテナごとに1つ?Webサービスごとに1つ、スタンドアロンWebサービスクライアントアプリケーションごとに1つ?

理由:プロパティを更新すると、java.util.Propertiesからjava.lang.ConcurrentUpdateExceptionが発生します。

クラスが更新するときにプロパティオブジェクトを「ロック」するために静的ブール変数を使用していますが、これは例外の発生を妨げていません。

これにより、私のクラスで使用されている静的オブジェクトは、java.util.Propertiesで使用されているものと同じスコープレベルではない可能性があると私は信じています...しかし、それは単なる推測です。

助けてくれてありがとう。