- PR -

クラス名とデータ変数を区別する記法はありますか

投稿者投稿内容
Jun
大ベテラン
会議室デビュー日: 2003/08/25
投稿数: 141
投稿日時: 2003-09-08 17:46
例えばインスタンス変数とローカル変数が同名であったとき
インスタンス変数にthisをつけることで双方を区別することができますよね

同じようにクラス名とクラス変数が同じものがあったときにこれを
区別することはできますでしょうか.この場合必ずクラス変数とみなされてしまう
ようなのですが

例えば
class a
{
public static final int A = 0;
}

public class b
{
private static int a = 0;

public static void main(String[] args)
{
System.out.println("" + a.A + a);
}
}
は a.Aがエラーとなります
こういうことは普通はしませんがもしこのようになってしまったときaがクラス名
であることを指定する方法はありますか
Jun
大ベテラン
会議室デビュー日: 2003/08/25
投稿数: 141
投稿日時: 2003-09-08 17:58
自己レスですが, クラス名の方にパッケージ名をつければよいのですね
だだ
会議室デビュー日: 2003/09/08
投稿数: 2
投稿日時: 2003-09-08 19:56
初めまして。
ちょっとお節介かもしれませんが、クラス名の表記法は基本的には最初は大文字で表し、変数などは、最初に属性をつけるといいと思います。

Class Sample{

int iSample;
String strSample;
long lSample;
}

という感じです。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2003-09-08 20:37
引用:

だださんの書き込み (2003-09-08 19:56) より:
初めまして。
ちょっとお節介かもしれませんが、クラス名の表記法は基本的には最初は大文字で表し、変数などは、最初に属性をつけるといいと思います。

Class Sample{

int iSample;
String strSample;
long lSample;
}

という感じです。




この「属性」というのは型を表しているのですか? でしたら型チェックの厳しいJavaの
ような言語では不要だと思います。ちなみにカスタムクラスの型だったらどうするんですか?
お犬様
ベテラン
会議室デビュー日: 2003/01/26
投稿数: 67
投稿日時: 2003-09-08 21:30
引用:
Junさんの書き込み (2003-09-08 17:46) より:

例えば
class a {
 public static final int A = 0;
}
public class b {
 private static int a = 0;

 public static void main(String[] args) {
   System.out.println("" + a.A + a);
 }
}
は a.Aがエラーとなります

Java言語規定の文脈的にあいまいな名前の再分類の項によれば
引用:
AmbiguousName が,名前,"."及びIdentifier から構成される限定名ならば,"." の左側の名前を最初に再分類する。その理由は,それ自体がAmbiguousNameだからである。

AmbiguousName が単純な 識別子(Identifier) で構成される単純名の場合。

Identifier が,その名前での局所変数宣言(14.4) ,仮引数宣言(8.4.1, 8.8.1, 14.19) 又はフィールド宣言(8.3) の有効範囲(6.3) 内で出現すれば,そのAmbiguousName は ExpressionNameとして再分類する。

そうでなければ,Identifier が,その名前での局所クラス宣言(14.3) 又はメンバ型宣言(8.5, 9.5) の有効範囲 (6.3) 内で出現すれば,そのAmbiguousName は,TypeNameとして再分類する。

そうでなければ,その名前の型が,単一の型インポート宣言(7.5.1) によって,又は最上位クラス(8.) 若しくはインタフェース型宣言(9)によって,Identifier を含むコンパイル単位(7.3) 内で宣言されていれば,そのAmbiguousName は,TypeNameとして再分類する。

とありますからエラーにならないと言語規定に反します。
Jun
大ベテラン
会議室デビュー日: 2003/08/25
投稿数: 141
投稿日時: 2003-09-09 09:32
まあこれに関して簡単に言うとjavaでは(他のたいていの言語も)左から右に向かってしか
解釈してくれないということでしょうか

名前に関してこのようなことが発生したのは名前に日本語名を使ったから
というのと名前に無頓着であったからですが, 日本語名を使ったときに
何か良い方法を考えていらっしゃる方はおられますか

日本語名の使い始めのころは変数名には "a" とか "the" をつけていたのですが
結局英数字と漢字を打ちかえるのが面倒になり, やめてしまいました.
その結果クラス名と変数が同じなどというようになってしまいました.

クラス クラス = new クラス();

というように
これだけだと慣れればなんとも無いのですが, 時々タイトルのようにエラーとなる場合が
でてしまいます.
まりり
ぬし
会議室デビュー日: 2001/12/05
投稿数: 329
投稿日時: 2003-09-09 09:45
引用:

Junさんの書き込み (2003-09-09 09:32) より:
名前に関してこのようなことが発生したのは名前に日本語名を使ったから
というのと名前に無頓着であったからですが, 日本語名を使ったときに
何か良い方法を考えていらっしゃる方はおられますか


できるからといって、日本語を変数名に使うのは気持ちが悪いですね、やっぱり。

引用:

日本語名の使い始めのころは変数名には "a" とか "the" をつけていたのですが
結局英数字と漢字を打ちかえるのが面倒になり, やめてしまいました.


ここにいたっては本末転倒な気が。
aだのtheだの英語の習慣を持ち込むんなら日本語変数名なんか使わなきゃいい。


そもそもJavaでは習慣的にクラス名と変数名が区別されるようになっているわけで
日本語のクラス名・変数名を使いたいんなら同じようにルールを設けるべきです。
Jun
大ベテラン
会議室デビュー日: 2003/08/25
投稿数: 141
投稿日時: 2003-09-09 10:15
引用:

まりりさんの書き込み (2003-09-09 09:45) より:
引用:

Junさんの書き込み (2003-09-09 09:32) より:
名前に関してこのようなことが発生したのは名前に日本語名を使ったから
というのと名前に無頓着であったからですが, 日本語名を使ったときに
何か良い方法を考えていらっしゃる方はおられますか


できるからといって、日本語を変数名に使うのは気持ちが悪いですね、やっぱり。

引用:

日本語名の使い始めのころは変数名には "a" とか "the" をつけていたのですが
結局英数字と漢字を打ちかえるのが面倒になり, やめてしまいました.


ここにいたっては本末転倒な気が。
aだのtheだの英語の習慣を持ち込むんなら日本語変数名なんか使わなきゃいい。


これは私もやってみてそう思いました
引用:

そもそもJavaでは習慣的にクラス名と変数名が区別されるようになっているわけで
日本語のクラス名・変数名を使いたいんなら同じようにルールを設けるべきです。


日本語には漢字だけでなく平仮名もカタカナもあるのでその点は英字名より便利かも
しれません.ただ定着したルールとなると知りません

public class 電車 implements デンシャ
{
public static void main(String[] args)
{
デンシャ でんしゃ = new 電車();
...
}
}
のようにすればいいのかな

スキルアップ/キャリアアップ(JOB@IT)