Javaのクラスの中身について
- Javaのクラスの中身について調べる方法や制限について知りたいです。
- Javaでクラスの中身を確認する方法について調べています。
- クラスのメソッドの中身を把握する方法について教えてください。
- ベストアンサー
Javaのクラスの中身について
Javaのクラスの中身について メソッドの中身などを見ることはできないのでしょうか? たとえばJTextComponentのpasteメソッドの中は Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); Transferable obj = clipboard.getContents(null); String str = (String)obj.getTransferData(DataFlavor.stringFlavor); というように クリップボードの文字列を取得してそれをコンポーネントに追加していると思うのですが、 実際に中身がわからなければオーバーライドなど 細かいことができないのではないかと、ふと思いました。 公式のライブラリや、javap、参考書などでは引数、戻り値、アクセス制限などはわかるのですが それではカバーできない問題が最近よく起きます。 今現在はJava上級者が作っているようなサイトを やりたいことに応じて徹底的に調べてなんとか情報をいただいているのですが、 時間的に非常に非効率で死にそうです。 アプリケーションの開発ということの本質?からずれているかもしれませんが、 知りたいのだからしょうがないというか・・・
- toorisugari001
- お礼率100% (3/3)
- Java
- 回答数1
- ありがとう数2
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 Java API のソースコードなら、JDKに付属されていますよ。 JDKのインストール先の src.zip がそれです。
関連するQ&A
- クリップボードからの取得プログラム
ボタンを押すと、テキストエリアにクリップボードの中身を代入する単純なプログラムです。 しかしコンパイルエラーが出てしまいます(~_~;) getTransferDataFlavor()メソッドがないからアブストラクトにしろ、というエラーです。 あるサイトから拾ったものを組み合わせたのですが、 getTransferDataFlavor()メソッドはつかっておらず、 なぜコンパイルエラーなのかわかりません。 お分かりになる方、ぜひぜひおしえてください<m(__)m> ボタンクリック public void actionPerformed(ActionEvent e) { Clipboard cb = getToolkit().getSystemClipboard(); Transferable st = cb.getContents(this); try{ String ds = (String)st.getTransferData(DataFlavor.stringFlavor); txt.setText(ds); }catch(Exception ex){}
- 締切済み
- Java
- javaのオーバーライドについての質問です。
* クラスParent04に受け取ったString配列の中身を全て大文字に変換するChangeメソッドが定義されています。クラスParent04を継承するクラスChild04でChangeメソッドを オーバーライドして、String配列の中身を全て小文字に変換するように変更してください。 その後クラスOverRide04のmainメソッドからChangeメソッドを呼び出して、 変換後のString配列の要素を全て出力してください。 */ // オーバーライドされるので覆い隠される class ORParent04{ public String[] Change(String[] strArray){ int len = strArray.length; String[] Array = new String[len]; for(int i = 0; i < len; i++){ Array[i] = strArray[i].toUpperCase(); } return Array; } } // ORParent04クラスを継承し、ORChild04でオーバーライド // こちらが適用される。 class ORChild04 extends ORParent04{ //ここからプログラムを追加してください。 public String[] Change(String[] strArray){ int len = strArray.length; String[] Array = new String[len]; for(int i = 0; i < len; i++){ // toLowerCaseで小文字に変換 Array[i] = strArray[i].toLowerCase(); } // 値を返す return Array; } } class OROverRide04{ public static void main(String[] args){ // ORChild04クラスのインスタンス化 ORChild04 ORchild04 = new ORChild04(); //ここからプログラムを追加してください。 // Changeメソッドの呼び出し:戻り値String[],引数String[] String[] array = ORchild04.Change(String[] args); // 表示 System.out.println(array); } } このような問題で、現在これをコマンドプロンプトでコンパイルすると、mainメソッド内のString[] array = ORchild04.Change(String[] args);メソッド呼び出し部分が指定され、 「'.class'がありません」 「;がありません」 という2つのエラーが表示されます。ネットでエラー表記の意味を検索し、コードを確認しましたが、「{}」と上記より上の行の;が特に抜けている、という訳ではありません。勿論自分が何か見落としている為にコンパイルエラーになるのですが、戻り値と引数の値は合わせているので、心情としては「動けジ・O!何故動かん!?」という具合です。 どなたか考え方やヒントなどお願い致します。後もう少しだと思うのですが。。。
- ベストアンサー
- Java
- インターフェイス実装クラスの表示について
/* インタフェースPlanetを実装したクラスEarth、Marsがあります。 以下の実行結果になるようにクラスAggregateへshowメソッドを 追加してください。 [実行結果] 地球 太陽系にある惑星の1つで、太陽から3番目に近い。・・・ 火星 太陽系の太陽に近い方から4番目の惑星である。・・・ */ // [Planet.java] // 実装したいPlanetクラス interface Planet { public String getName(); public String getOutline(); } // Planetを実装したEarthクラス // [Earth.java] class Earth implements Planet { private final String name="地球"; // getNameメソッド:戻り値String、引数無し public String getName(){ return name; } // getOutlineメソッド:戻り値String、引数無し public String getOutline(){ return "太陽系にある惑星の1つで、太陽から3番目に近い。・・・"; } } // Planetを実装したMarsクラス // [Mars.java] class Mars implements Planet { private final String name="火星"; // getNameメソッド:戻り値String、引数無し public String getName(){ return name; } // getOutlineメソッド:戻り値String、引数無し public String getOutline(){ return "太陽系の太陽に近い方から4番目の惑星である。・・・"; } } // メインクラス // [Main.java] class Main{ public static void main(String[] args){ // Earth&Marsクラスのインスタンス化 Earth earth = new Earth(); Mars mars = new Mars(); // Aggregateクラスのインスタンス化 Aggregate aggregation = new Aggregate(); // showメソッド呼び出し:戻り値無し、引数earth・mars aggregation.show(earth); aggregation.show(mars); } } // [Aggregate.java] class Aggregate { // ここにshowメソッドを追加 public void show(Earth planet){ System.out.println(); } public void show(Mars planet){ System.out.println(); } } showメソッドに引数としてEarth planet,Mars planetを渡すというところまでは理解しています。後は星の名前と概要を表示するのですが、例えば、 showメソッド内 // ここにshowメソッドを追加 public void show(Earth planet){ String str = earth.getName(); System.out.println(str); } public void show(Mars planet){ String str2 = mars.getOutline(); System.out.println(str2); } } とすると、erathとmarsの部分が「シンボルがありません」のエラーになります。自分の認識としては、EarthクラスとMarsクラスでフィールド変数を宣言しているので使えるのでは?と思っていたのですが、全然違うようです。どなたかどちらかのコード例を表記して頂けないでしょうか?よろしくお願い致します。
- ベストアンサー
- Java
- 計算クラスのメソッドについて
<問題> Mainクラス mainメソッド 1)実行時に引数を2つ付けて実行する。(数字) 2)計算クラスのオブジェクトを生成。 3)argsの0番目と1番目から値を取得し、int型に変換する。 4)int型に変換した値2つを引数として、計算クラスの足し算メソ ッドを実行し、戻り値を取得して表示する。 計算クラス 足し算メソッド(引数=int,int) 1)int型の数字を引数として2つ受け取る。 2)二つの引数の値を足し算する。 3)計算した値を戻り値とする。 *********************************************************** 上記の問題についての質問です。 最初mathくらすのメソッドを使うのかと思ったのですが、 足し算を計算するようなメソッドが無かったのでネットで検索 して見つけたcalcAdd()というメソッドを使って記述してみました。 でも「シンボルを見つけられません」のエラーが出てコンパイル 出来ないし、メソッドの使い方も違うような気がするので、 分かる方正しい記述の仕方を教えてください。 package siryou; class Keisan { int cal; int cul; public int tashizan(int a, int u) { cal = a; cul = u; int kekka = (Integer)calcAdd(cal, cul, 0); return kekka; } } class TashiHikiKakeWari { public static void main(String args[]) { Keisan ki = new Keisan(); String str1 = args[0]; String str2 = args[1]; int res1 = Integer.parseInt(str1); int res2 = Integer.parseInt(str2); ki.tashizan(res1, res2); int kekka = ki.tashizan(res1, res2); System.out.println(kekka); } } ************************************************************ calcAdd()メソッドの呼び出し方も間違っている気がするのですが、 そもそもこのメソッドって呼び出せば自動的に計算されるように なっているのですか? それとも足し算を計算する記述は別にしなければならないのでしょうか?
- ベストアンサー
- Java
- 親クラスから子クラスへアクセス。
親クラスから子クラスへアクセス。 お世話になります。 以下のプログラムについて考えています。 public class Main{ public static void main(String[] args) { SubA subA = new SubA(); SubB subB = new SubB(); Super[] subs = {subA,subB}; subs[1].method(); subs[2].method(); } } class Super{ String str = "親"; public void method(){ System.out.println(str); } } class SubA extends Super{ String str = "子A"; } class SubB extends Super{ String str = "子B"; } この場合、出力結果は当然 親 親 になります。 これを子クラスの str を表示するようにしたいのです。つまり 子A 子B です。 ただし、子クラスで method() をオーバーライドしたり、super.str = "子A" のように親クラスを書きかえずにです。 子クラスが何百種類もある場合、全く同じmethod()を書く無駄や、変更があったときにそれを全てを修正しなければならないことを避けたいのです。 何か良案がありましたら、ぜひご教授ください。よろしくお願いします。
- 締切済み
- Java
- メソッドのオーバーロードとオーバーライドのシグニチャはどうして違うの?
オーバーロードのほうはメソッド名+引数の数+引数のデータ型ですが、オーバーライドのほうはそれに加えて戻り値の型も加わります。 どうして同じではいけないのでしょうか?
- ベストアンサー
- Java
- Stringの100と100.0を同一とみなす方法
とあるフレームワークで計算するメソッドを通して計算させると、引数によって有効桁までのStringが戻り値として返されます。 そのStringの戻り値を使用して処理を分岐させたいのですが、幾分有効桁に問題があります。 (例) String p_str1 = "100" String p_str2 = "100.0" このp_str1とp_str2を等しいとみなしたいのですが、愚直に末尾から順番に文字を取り出し、最後の桁が0の場合は切り捨て(直前が.ピリオドの場合はピリオドモ含めて)てするような方法しか思いつきません。 それ以外にp_str1とp_str2を等しいとみなす方法はないでしょうか? よろしくお願いいたします。
- 締切済み
- Java
- javaプログラムについて
mainメソッド内の指定された部分の処理を、 別のメソッドに分けてください。 mainメソッド内から作成した別メソッドを呼び出して 実行できるようにしてください。 ※分ける前と分けた後で処理結果が変わらないこと (入力された文字が"A"の場合true, それ以外の場合falseを返すように) */ class MethodAdd1{ public static void main(String[] args){ /* // ★ここから if("A".equals(args[0])){ judge = true; }else{ judge = false; } // ★ここまで */ boolean judge; if("A".equals(args[0])){ System.out.println("true"); }else{ System.out.println("false"); } } /* **戻り値:boolean **引数:String */ //ここにメソッドを作成 public static boolean equals(String a){ String str="A"; if("A".equals(str)){ return true; }else{ return false; } } } これで一応trueかfalseと表示されるのですが、合っているのか分かりません。 お時間のある方で、手直しをして頂ける方お願い致します。
- 締切済み
- SE・インフラ・Webエンジニア
- 親クラスと子クラスのフィールドとメソッドについて
親クラスと子クラスのフィールドとメソッドについて 以下のサンプルソースを実行した時の動作の原理について 教えてください。 oya型変数にkoクラスのインスタンスを作成した場合、 メソッドはkoクラスのものなのに、 フィールドはoyaクラスのものになるということが イマイチすっきり理解できません。 どういうことなんでしょうか。 ------------------------------------------------------- [ソース] public class exec { public static void main( String args[]){ oya obj = new ko(); System.out.println(obj.str_field); obj.disp_field(); } } public class oya{ String str_field="親実行"; public void disp_field(){ System.out.println(str_field); } } public class ko extends oya { String str_field = "子実行"; public void disp_field(){ System.out.println(str_field); } } ------------------------------------------------------- [実行結果] > 親実行 > 子実行 -------------------------------------------------------
- ベストアンサー
- Java
- javaのソースコードがわかりません
初心者には難しすぎるのでおしえてください。 クラス名 Advance5 ※main()メソッドがあるクラス Sub5_StaticCheck 指示 Advance5 クラス main()メソッド Sub5_StaticCheck クラスのcallDisp()メソッドを呼び出す ※インスタンスを生成せずに実行 Sub5_StaticCheck クラス callDisp()メソッド 定義 修飾子 : public キーワード : static 戻り値の型 : void 引数 : なし 指示 disp()メソッドを実行する その際、BufferedReader クラスを使用してキーボードから文字列を1 つ入力し、入力した文字列を引数として1つ渡す disp()メソッド 定義 修飾子 : public 戻り値の型 : void 引数 : String 型の値を1つ 指示 引数で受け取った値を表示する
- 締切済み
- Java
お礼
こんにちは。 またまたお早い回答ありがとうございます。 本当に助かりました。いままで気づかなかったとは・・・ 感謝感謝