- 締切済み
Javaのクラスについて質問です。
class test{ private static int sum=1; となっていた場合にtestクラスの外からsumの値を取得し testクラスの外から出力するには、testクラス内と外のクラスにどのような記述をすればいいでしょうか?
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- Ogre7077
- ベストアンサー率65% (170/258)
OOPの原則なので出来ません というのが模範解答ですが、デバッグの都合で取得したい場合も有りますね セキュリティ設定がなされていない素のJava環境なら、以下で可能です Test test = new Test(); Field field = Test.class.getDeclaredField("sum"); field.setAccessible(true); // ここが肝 int num = field.getInt(test); ただし危険なコーディングとなりますので、 使用上の注意をよく読み、用法・用量を守り正しくお使い下さい。
- hairehairefuro
- ベストアンサー率0% (0/0)
クラス名は大文字で始めるのが慣習なので、あえて大文字で書きますね。 すでに解答されている内容を実際にコーディングしただけですが、 ↓こんなところでしょうか・・・・ //利用される側 class Test{ private static int sum=1; public static int getSum(){ return sum; } } //利用する側 class Test2{ public static void main(String args[]){ System.out.println(Test.getSum()); } } これで、Test2クラスで出力できますよ。「カプセル化」の基本です。
- Tacosan
- ベストアンサー率23% (3656/15482)
努力と根性のリフレクション (<悪い見本).
- askaaska
- ベストアンサー率35% (1455/4149)
1.testクラスにpublicでstaticなメソッドを用意し、sumをreturnする 2.testクラスの外から、そのメソッドをstatic参照する こんなとこかしら
- murakoshi0
- ベストアンサー率2% (3/138)
とりあえずプライベートをパブリックにしましょう