タグ

staticとtipsに関するkiyo_hikoのブックマーク (4)

  • Javaクラスの継承で独立したstatic変数を使いたい - OKWAVE

    インスタンスの存在と無関係にクラス共通のフィールドを持たせて、 Ex1.str = "hoge"; Ex2.str = "moga"; のような書き方がしたい訳ではなく、 Ex1 ex1 = new Ex1(); ex1.str = "hoge"; のように常にインスタンスを介する使い方で、 同じクラスに属するどのインスタンスにも共通させたいが、 それぞれのクラスで宣言するのは面倒なので、 できればスーパークラスで処理を一元的に記述したいということなら、 直接フィールドにアクセスするやり方ではないが、 以下のようにスーパークラスにインスタンスメソッドのアクセッサを定義して、 Classクラスをキーにしてクラス変数のMapに格納しておく方法もある。 public abstract class AbstractStatic { private static java.util.HashMap<

    Javaクラスの継承で独立したstatic変数を使いたい - OKWAVE
    kiyo_hiko
    kiyo_hiko 2013/04/12
    static変数を持ったクラスを継承するためstaticなHashMapにClassをキーにして値を格納 これいい
  • 定数

    概要 全く変化しない値を、異なる場所で何度も使いたい事があります。 このような場合、「リテラル」を何箇所にも分散させて書くのではなく、const というキーワードを用いて定義した定数を使うべきです。 ポイント const キーワードを使って、定数(値が絶対に変わらない / 変えれない変数)を定義できます。 見た目は変数と同じように使えますが、値の変更はできません。 コンパイル結果は「リテラル」を直接書いた場合と同様になります。 定数は、宣言時に値をリテラルで初期化できるものにしか使えません。(new できない。) より柔軟な初期化ができる readonly (読み取り専用)変数というものもあります。 変化しない値 例えば、以下のようなコードを見てください。 int[] array = new int[5]; for(int i=0; i<5; ++i) array[i] = int.Par

    定数
    kiyo_hiko
    kiyo_hiko 2013/02/22
    なるほど!
  • 静的な定数 | frog.raindrop.jp.knowledge

    kiyo_hiko
    kiyo_hiko 2013/02/22
    C#だとconst付けた時点でstaticになってしまうから、「static const」という字面のフィールドは有り得ないという話。たぶん。関連 → http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=5846&forum=7
  • 再入不可能な関数を C で実装する - いやなブログ

    再入不可能な関数を C で実装する 一度実行したら二度と中身を実行できなくなる再入不可能な関数を C で実装してみます。通常、このような関数はシングルトンなどの静的なデータの初期化に使いますが、ここではデータについては考えないことにします。 static 変数をフラグに使う まずは最も単純な方法から見ていきます。次の関数は static 変数をフラグに使って再入を防いでいます。厳密に言えば関数そのものには入ってしまっていますが、ここで気にしないことにします。 void once(void) { static int entered; // 最初は 0 if (entered == 1) { // すでに入ったことがある場合は return; // すぐ出る } entered = 1; // 初回の場合のみ、何かを実行する } この方法はシングルスレッドのプログラムではうまく動きますが、マ

    kiyo_hiko
    kiyo_hiko 2012/03/13
    static変数ではマルチスレッドでは破綻するとの話
  • 1