• ベストアンサー

Android static finalクラス

static final classって何ですか? ▽R.attr | Android Developers   http://developer.android.com/reference/android/R.attr.html に「static final class」ってあるのですが、意味が良く分かりません。 ・「static final」フィールドと何が違うのでしょうか? ・どうしてフィールドにせず、クラスにしているのでしょうか? ・ただの定数ということでしょうか?

  • re999
  • お礼率61% (476/777)
  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

final class は継承不可を意味します。 static class は内部クラスを意味します。 こちらを参考にしてください。 http://wisdom.sakura.ne.jp/programming/java/java46.html 簡単に言えば定数を参照するとき R.attr.定数名 R.color.定数名 としたいだけでしょう。単純な Color Attr にすると名前がユーザ側と衝突することがありますよね。 なお、 android は詳しくありませんので間違いがあるかもしれません。

re999
質問者

お礼

回答ありがとうございました。 リンク先、参考になりましたー

関連するQ&A

  • androidプログラミング エラーについて

    現在eclipseでandroidプログラミングに挑戦している超初心者です。 ネットで検索してもなかなかエラーの対処がわかりません。 詳細は以下の通りです。 String[] strArrayStr = getResources().getStringArray(R.array.ary_samples); TextView csTView = (TextView) findViewById(R.id.test); 1行目のarrayとary_samples2行目のtestにエラーが出ます。 R.javaを見ると、クラスやフィールドが自動生成されていなかったので、 public static final class array { public static int ary_samples; } 同じようにtestはidクラスに public static int test; と追記しました そして、実行をすると、先程訂正したR.javaが消えてしまいます。 エラーわかる方、解答お願いいたします。

    • ベストアンサー
    • Java
  • Android/OnClickListener

    Android/View.OnClickListenerインターフェイス インターフェイスについて教えてください。 下記ページで、「View.OnClickListenerインターフェイス」をimplementsする必要性が理解できません。 ▽Androidアプリにおけるユーザインタフェースの基本処理(3/4):CodeZine   http://codezine.jp/article/detail/6026?p=3 最終的に、ViewクラスonClickメソッドを呼び出すのであれば、 Viewクラスを継承すれば良いと思うのですが、 どうして、「View.OnClickListenerインターフェイス」をimplementsするのでしょうか? ボタンのオブジェクトにリスナーを登録する際、 「リスナーイベントに応じて呼び出されるメソッド」は少ないほうが良い、から? それとも、ViewクラスsetOnClickListenerメソッドの引数に書いている内容に関係しているのでしょうか? ▽View | Android Developers http://developer.android.com/reference/android/view/View.html#setOnClickListener(android.view.View.OnClickListener) >public void setOnClickListener (View.OnClickListener l) この引数(View.OnClickListener l)の意味を教えてください。 View.OnClickListener型しか受け付けない? l って何ですか?

    • ベストアンサー
    • Java
  • Android super.onCreate(sa

    Androidで、アクティビティオブジェクトを生成している箇所(new Activity?)を見たいのですが、 どこで生成しているのでしょうか? ネットを見たら、 super.onCreate(savedInstanceState);で、画面オブジェクトを作成、て書いてあったのですが、 ここで言う.onCreateは、 ▽Activity | Android Developers   http://developer.android.com/intl/ja/reference/android/app/Activity.html#onCreate(android.os.Bundle) のことでしょうか? 見方が分からないのですが、このメソッドで、画面オブジェクトを生成しているのでしょうか? それとも、コンストラクタか何かで、画面オブジェクトを生成しているのでしょうか? それは、どこに書いてあるのでしょうか?

    • ベストアンサー
    • Java
  • staticと+=の意味を・・・

    いろいろ調べたのですが、staticはクラスフィールドやクラスメソッドの宣言などに使うと書いてありますが、public static void mainとか以外に見たことありませんし使ったこともないんです・・・。 なのでイマイチ理解できません・・・。使い方を教えてください。あと、+=加算代入と書いてありますが、これもよくわかりません・・・。 なんか一語一語「これってどういう意味なんだろう?」とかって思うと調べても漠然とした説明ばかりで理解に苦しみます。 なにかいいアドバイスがあれば教えてください。よろしくお願いします。

    • ベストアンサー
    • Java
  • クラスについての質問です!!

    本に下のような説明があったのですが、ここで出てくる「メンバ」という言葉がわかりません。 これはどういう意味合いなのでしょうか? よろしくお願いします。 ――――――――――――――――――――――――――― public class JsMsg1{ public static void main (String args[ ]) { ・・・ } } というプログラムはJsMsgというクラスがあり、メンバとしてmain()メソッドがあり、フィールドはないというクラス構成をしています。

    • ベストアンサー
    • Java
  • 「staticでない…」について

    今,下記のプログラムを実行させたいのですが,次のエラーが出て困っています。基本的なことだと思いますが,つまずいて修復できません。 どのような対処をすればよいでしょうか。 エラー:「staticでない変数thisをstaticコンテキストから参照することができません。」 プログラム import java.awt.*; import java.awt.geom.*; import javax.swing.*; import java.util.*; public class Test{ public static int R,G,B; public static void main (String[] args){ R = Integer.parseInt(args[0]); G = Integer.parseInt(args[1]); B = Integer.parseInt(args[2]); MyFrame frame = new MyFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } class MyFrame extends JFrame{ public static final int WIDTH = 400; public static final int HEIGHT = 400; public MyFrame(){ setTitle("Test"); setSize(WIDTH,HEIGHT); Container contentPane = getContentPane(); MyPanel panel = new MyPanel(); contentPane.add(panel);}} class MyPanel extends JPanel{ public void paintComponent(Graphics g){ super.paintComponent(g); Graphics2D g2 = (Graphics2D)g; Rectangle2D rect = new Rectangle2D.Double(100,100,100,50); g2.setColor(new Color(R,G,B)); g2.fill(rect);}}}

    • ベストアンサー
    • Java
  • 違うクラスからの変数の共有化

    一つのクラスの中にある変数の値を、二つの別なクラスから呼び出して、その二つのクラスのどちらから変数を参照しても同じ値が帰ってくるようにしたいのですが、いろいろ調べてもできなかったので質問させていただきますm(_ _)m // 共有化させたい変数を持つクラス // Var.java public class Var{  public static int i;  public Var(int i){ this.i = i; }  public Var(){}  public static void getI(){   return i;  } } //クラス1 //Class1.java public class Class1{  Var var = new Var(1); } //クラス2 //Class2.java public class Class2{  Var var = new Var();  System.out.println(var.getI()); } とした場合、Class1を実行し、次にClass2を実行すると、クラス1で定義した変数の値である 1 が戻ってくるようにしたいのですが、上記の方法では、Class2を実行すると結果は 0 になってしまいました。 まだまだ習い始めたばかりでいまいちstaticを使い切れていないと思います・・・ たとえば、PrintStreamクラスの public static final PrintStream out というのはどこから参照しても同じ結果なのでそのようなやり方で大丈夫だろうと思ったのですが・・・ このような方法では共有化させることはできないのでしょうか?またできないのでしたらほかのやり方がもしあった場合は教えていただきたいと思います。 どうかお願いします。

    • ベストアンサー
    • Java
  • abstract と static を一緒に付けることはある?

    抽象クラスの抽象メソッドにstaticを付ける(abstract と static をメソッドに一緒に付ける)ことはありますか? 例えば、 abstract class Super {  static abstract void meth(); } class Sub extends Super {  static void meth() {   System.out.print("hello");  } } として、mainの中に  Sub.meth(); を書いてみたのですが、普通にコンパイルは通りhelloが出力されます。 staticの意味を考えると、こういうことをするのは意味がないと思うのですが、独学なので身近に聞ける人もいません。 御教授よろしくお願いします。

  • クラス名はどうするのですか?

    package ex7; public class Sample { public final static int VALUE = 100; } package ex7; import static ex7.Sample.VALUE; public class Main { private final static int VALUE = 0; public static void main(String[] args) { System.out.println(VALUE); } } 上記のプログラムのクラス名は何をつければいいですか・・・? 同じくプログラム名は何と付ければいいですか・・・? ご多忙中恐れいります・・・。 ご回答の程宜しくお願い申し上げます。 回答者 これが、素人さんには分かりにくいんですね。 mkdir ex7 で、ex7 というディレクトリを作製して、 その中に、 Sample.java を public class Sample { public final static int VALUE = 100; } で、 Main.java を package ex7; import static ex7.Sample.VALUE; public class Main { private final static int VALUE = 0; public static void main(String[] args) { System.out.println(VALUE); } } で作製して、 ex7 の中から出て、 javac ex7/Sample.java javac ex7/Main.java でコンパイルします。 質問者 度々すいません・・・。 ファイル名は何にすればいいですか・・・? ご回答がなかなか来ません。

    • ベストアンサー
    • Java
  • 数式を構成する問題

    トークンの種類を区別するための定数の定義が class TOK { public final static int plus = 0; // 演算子+ public final static int minus =1; // 演算子 – public final static int mul = 2; // 演算子* public final static int div = 3; // 演算子 / public final static int mod = 4; // 演算子 % public final static int id = 5; // 変数 public final static int const = 6; // 定数 public final static int u_plus =7;// 単項演算子 + public final static int u_minus =8;// 単項演算子 – public final static int assign =9;// 演算子 = (代入) public final static int lparen =10; // 左括弧 public final static int rparen =11;// 右括弧 public final static int END = 12;// 式の終わり } とあるとき、切り出すトークン毎に生成するオブジェクトの定義 class Token { // フィールド変数の定義 … 1) トークンの種類、2)数だった場合の値 // コンストラクタの定義 public Token(int Type) { 1文字トークンを作成 +,-,*,/,%,(,),= } public Token(int Type, int val) { 整数トークンを作成のコンストラクタ (type == TOK.costantで) } // メソッドの定義 public int getType() { トークンの種別を返す } public int getIntVal() { // このメソッドは定数トークンに対してのみ有効 トークンの整数値を返す } public String toString() { トークンの情報を文字列で返す } } というクラスを作成してください。お願いします。

専門家に質問してみよう