どこの説明を見てもいまいち理解できないんですが、

メソッド引数にcontextとあるので、とりあえずそれを渡すように書いて疑問に思うことをやめてましたが、
あらためてcontextってどういう物なのか教えてください;

A 回答 (2件)

> メソッドで hogehoge(Context context,String path~)なんてなってて、そのメソッド使うときに


> contextにはthis て、渡してるんですが、、これは自インスタンスを入れてるんですよね?

これはご存じの通り、自分のインスタンスを渡しています。
なぜこれが許されるかというお話になるのですが、それは、
thisが継承しているクラスが、何を継承しているかを見れば
答えになるのでは、と思います。

つまり、thisが継承しているクラスは、上位階層でContextクラスを
継承しているでしょう。
その時に使われるのは、thisと指定したインスタンス内で定義されている
メソッドなどではなく、thisの継承元Contextクラス内で定義されている
メソッドなどになります。
    • good
    • 3
この回答へのお礼

なるほど理解できましたありがとうございます

お礼日時:2011/04/21 22:01

http://www.sophia-it.com/content/%E3%82%B3%E3%83 …

つまり、そのcontextを利用して、いくつかの情報を取得したり、制御したりすることが出来るわけです。
『特定の情報や制御を有している塊』です。

この回答への補足

ええ、、まぁそのようにいつも説明に書いてあるのですが。
メソッドで hogehoge(Context context,String path~)なんてなってて、そのメソッド使うときにcontextにはthis て、渡してるんですが、、これは自インスタンスを入れてるんですよね?
この場合はインスタンスそのものでなく、そのインスタンスの情報が扱われるってことなんですか?
なんだか書いててよくわかりませんが;w

補足日時:2011/04/19 14:16
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QJavaのダウンロードについて

さっきパソコンの電源をいれたら

ダウンロード準備完了  Java(TM) Update

Java(TM) Updateを使って最新版をコンピュータにダウンロードすることができます。
最適なセキュリティーとパフォーマンスのため、今すぐ最新版をダウンロードすることをお勧めします。

Java(TM)6 Update 2 Available
Java(TM)6 Update 2 includes features and fixes to accelerate
your Java applications as well as updates to keep Java secure.

後で通知する   ダウンロード

という表示がでたのですが、ダウンロードしても問題ないのでしょうか?

Aベストアンサー

こんばんは
お持ちのPCにJavaがインストールされていれば Updateは自動で配信されます 
Java(TM)6 Update 2は今のJavaの最新ですから ダウンロードしても問題は有りません
ただ Javaはかなりの容量を使いますから(140MB位)新しいのを入れたら 以前のバージョンは削除した方がいいですよ
UpdateでHDDが一杯に成ってしまいますからね
                            参考まで

Q匿名クラス内のメソッドをオーバーライド。実引数はいつどこから来るのでしょうか?

 お世話になっております。

匿名クラス内のメソッドをオーバーライドするときの引数についての質問なのですが

File d = new File("F:\\dir");

File[] d2 = d.listFiles(new FileFilter(){ public boolean accept(File hoge){

return hoge.toString().endsWith(".txt");

}
}
);

オーバーライドしたacceptメソッドの仮引数のFile型のhogeがありますが

このacceptメソッドの実引数はいつどこから来るのでしょうか?

このacceptメソッドの実引数はどこで「acceptメソッドの呼び出し」で指定すればよいでしょうか?

その他ActionEvent e などの仮引数も謎です。

どうかよろしくご指導お願いいたします。

 お世話になっております。

匿名クラス内のメソッドをオーバーライドするときの引数についての質問なのですが

File d = new File("F:\\dir");

File[] d2 = d.listFiles(new FileFilter(){ public boolean accept(File hoge){

return hoge.toString().endsWith(".txt");

}
}
);

オーバーライドしたacceptメソッドの仮引数のFile型のhogeがありますが

このacceptメソッドの実引数はいつ...続きを読む

Aベストアンサー

File.javaを見てみることをお勧めするわ。
内部でacceptを呼び出しているから。

QJAVAダウンロード出来ません。

JAVAソフトウェアダウンロードのページでダウンロードを試みましたが、
http://www.java.com/ja/
ダウンロードを開始すると
"設定を確認中"と出てダウンロードが開始されません。
どうすればダウンロードできますか?

Aベストアンサー

手動で一旦ダウンロードしてから、インストールもできませんか?
http://www.java.com/ja/download/manual.jsp

Q引数thisとContextの関係について教えて!

(引数)→(受け取る側?) :型の種類?
(10)→int X :整数
(”HELLO”)→String S :文字
(This)→Context context :なんだ?
Thisが自身の属するインスタンスをさすのはわかったのですが、引数にインスタンスを設定している意味がわからないというかなんというか・・・
回答していただけるとうれしいです!!

Aベストアンサー

では

Sample2 s = new Sample2 ;
LinearLayout ll = new LinearLayout(s);

これだとどうですか?
これも、Sample2のインスタンスを LinearLayoutの引数に設定しています。
// 正しいプログラムかどうかは一旦置いておきます。

thisというのは、インスタンスメソッドの中で使われて「そのインスタンス自身」を表す特殊なメンバー変数だと考えてください。
上の場合、 new した段階でそれぞれに
s.this = s ;
ll.this = ll ;
が実行されている感じです。


> (”HELLO”)→String S :文字
正確ではありません。
"HELLO"という「Stringのインスタンス」は、Stringの親クラスやインターフェースで受けることもできます
(”HELLO”) → Object O
等 

前回のSample2は Activityを継承したクラスです。
引数として、Activityやその親クラスで受けることができます。
Contextは Activityの親です。
http://developer.android.com/reference/android/app/Activity.html


Javaでのオブジェクト指向について、少し理解を深めてから先に進むのがよろしいかと思います。

では

Sample2 s = new Sample2 ;
LinearLayout ll = new LinearLayout(s);

これだとどうですか?
これも、Sample2のインスタンスを LinearLayoutの引数に設定しています。
// 正しいプログラムかどうかは一旦置いておきます。

thisというのは、インスタンスメソッドの中で使われて「そのインスタンス自身」を表す特殊なメンバー変数だと考えてください。
上の場合、 new した段階でそれぞれに
s.this = s ;
ll.this = ll ;
が実行されている感じです。


> (”HELLO”)→String S :文字
正確ではありませ...続きを読む

QJAVA開発キットのダウンロード法。

プログラミング全くの初心者ですが、JAVAを始めてみたいと思っています。ところがJAVAの入門書を手に入れたところ、JAVAの開発キットをダウンロードしようとしてみましたが、入門書が古いせいか、そのダウンロードサイトの様子が変わっていたり、また英語表記だったりして自分なりにいろいろとやってたものの、よくわかりません。どなたか、最新のJAVA開発キットのダウンロード法を詳しく教えて頂けないでしょうか…。使用OSは、WindowsXPです。

Aベストアンサー

Windows版でいいんですよね?
下記のURLから、

・「JDKのダウンロード」をクリック
・「ACCEPT」にチェック
・Windows Platform - J2SE(TM) Development Kit 5.0 Update 6の「Windows Offline Installation, Multi-language」をクリック
・もう一度 Windows Platform - J2SE(TM) Development Kit 5.0 Update 6の「Windows Offline Installation, Multi-language」をクリック

で、ダウンロード出来ます。

参考URL:http://java.sun.com/j2se/1.5.0/ja/download.html

Qmainメソッドの引数

Javaのプログラミングを練習しています。
下記のような問題があり、プログラムを組んでみたのですが
何か足りないようで思うような処理ができません。
ご教授頂けたら幸いです。
宜しくお願いします。

main()メソッドの引数で指定された名前のファイルに、キーボードから入力された内容を1行ずつ(上書きモードで)書き込むプログラムを作成して下さい。
(キーボードからの入力内容がない(空文字列の)場合にはプログラムを終了させて下さい)
ただし、引数の個数が1個でない場合には「ファイル名を正しく指定して下さい」と表示して、プログラムを異常終了させて下さい。
又、処理の途中で例外が発生した場合には、発生した例外の内容を表示して、プログラムを異常終了させて下さい。

import java.io.*;
public class Sample101
{
public static void main(String[] args)
{
BufferedReader br = new BufferedReader( new InputStreamReader(System.in));
try{
PrintWriter fout = new PrintWriter(new BufferedWriter(new FileWriter("text1.txt")));
System.out.print("ファイルに書き込む文字列を入力して下さい >");
String s1 = br.readLine();
fout.println(s1);
fout.close();
}
catch(Exception e){
System.out.print("ファイル名を正しく指定して下さい");
System.exit(1);
}
}
}

Javaのプログラミングを練習しています。
下記のような問題があり、プログラムを組んでみたのですが
何か足りないようで思うような処理ができません。
ご教授頂けたら幸いです。
宜しくお願いします。

main()メソッドの引数で指定された名前のファイルに、キーボードから入力された内容を1行ずつ(上書きモードで)書き込むプログラムを作成して下さい。
(キーボードからの入力内容がない(空文字列の)場合にはプログラムを終了させて下さい)
ただし、引数の個数が1個でない場合には「ファイル名を...続きを読む

Aベストアンサー

>main()メソッドの引数で指定された名前のファイル

とあるのに

PrintWriter fout = new PrintWriter(new BufferedWriter(new FileWriter("text1.txt")));

と、text1.txtと固定になってますね。

>ただし、引数の個数が1個でない場合には「ファイル名を正しく指定して下さい」と表示して、プログラムを異常終了させて下さい。

引数のチェックしていませんね。

>(キーボードからの入力内容がない(空文字列の)場合にはプログラムを終了させて下さい)

入力があってもなくても1度の入力で終わってしまいますね。
他にも「おや?」な部分がありますけど、それは上記の部分を直してからのほうがよろしいかと。

QJAVAのコンパイラのダウンロードについて

 最近、JAVAを勉強しようと思い、JAVAのコンパイラができるというJDKと呼ばれるものををダウンロードしようとしたのですが、ページが英語のせいでどうすればダウンロードできるのか全く分かりません。

 今のところ、勉強するだけなので無償と言うこれをダウンロードしたいのですが、いったいどこをどうすれば落とせるんでしょうか。

 あと、ほかにもForte for Javaを使えば便利と聞いたのですが、確かJAVAはテキストエディタとJDKがあれば作れると聞いたのですが、これはどういうことなのでしょうか。

 JAVAを始める以前の問題のような気もしますが、初心者なので誰か教えてください。

Aベストアンサー

http://java.sun.com/j2se/1.3/ja/download-windows.html を開いたら、
ページのやや下のほうにある、

Java 2 SDK, v 1.3.1_02 ソフトウェア Windows 95 / 98 / 2000 / NT 4.0 /Me (Intel プラットフォーム) 版のダウンロード

のところにあるcontinueボタンを押します。
そうすると、英語で使用契約書が表示されるので、
ページの最下部にあるACCEPT(同意する)というボタンを押すと、ダウンロード画面に進みます。
たくさんボタンが並んでいますが(やっぱり英語)、どれか1つをクリックするとダウンロードが始まります。

こんな感じでダウンロードがんばってください。

Qアサーションでメソッドの引数をチェックする

お世話になります。
SJC-P取得のための勉強をしている中で、
次の疑問点があります。
------------------------------------------
アサーションの使い方として、
(1)publicメソッドの引数をアサーションでチェックする--->ふさわしくない使い方
(2)privateメソッドの引数をアサーションでチェックする--->正しい使い方
------------------------------------------
以下のような解釈かと(無理やり)考えました。
privateメソッドは、自分自身しか使わない?ため、
引数に変な値を渡すことは無い。
publicメソッドは、他の人も使う可能性があり、
引数に変な値を渡すことが十分有りうる。
有り得る/有り得ないで、アサーションの
使う/使わないを決める???

しかしいまいちピンときません。
わかりやすく教えていただけませんでしょうか。

よろしくお願いします。

Aベストアンサー

個人的な意見ですが、
アサーションっていうのは、
いわば、プログラマがココでは、こうなっているハズという仮定を保証するものだと思います。
例えば
a / b
という処理をするときbが0なら0で割り算したという例外が起こるでしょう。
そういう例外は起こるべくして起こる例外ですので、こういう単なる例外に関して、
assert b!=0;
とかしてアサーション例外を起こさせるのは変です。
bが0であるかどうかをチェックしたり、もし0ならそれを回避するような処理を書いていてその処理の後では、「bは0ではない」と仮定する
ような場合には、アサートする意味がある(つまりこの部分で処理済みの処理にバグがあることを検出できる)と思います。

そういう意味では、単なるパラメータのチェックをpublicメソッドでやるなら例外を起こすべきだと思います。
privateメソッドの場合、クラスの実装をしている状態で、予期しないパラメータが渡されたということは、バグとしていいと思うので、そういうアサートはありだと思います。

基本的には、
・この処理の前には、こうなっているハズだ
・この処理の後には、こうなっているハズだ
・この処理の前後で、かわっていないハズだ
という仮定を保証するような場合に使うということでいいんじゃないでしょうか

個人的な意見ですが、
アサーションっていうのは、
いわば、プログラマがココでは、こうなっているハズという仮定を保証するものだと思います。
例えば
a / b
という処理をするときbが0なら0で割り算したという例外が起こるでしょう。
そういう例外は起こるべくして起こる例外ですので、こういう単なる例外に関して、
assert b!=0;
とかしてアサーション例外を起こさせるのは変です。
bが0であるかどうかをチェックしたり、もし0ならそれを回避するような処理を書いていてその処理の後では、「bは...続きを読む

Qjavaのapiをダウンロードしたいです。

Java EEをダウンロードするのではなくてJava SEをダウンロードして、必要に応じてapiをダウンロードしたいのですが、apiはどこからダウンロードすればよいのでしょうか?

javaxが含まれるのを使いたいです。

かなり調べたのですが、意外とどこにも回答がなく困っております。
初心者ですが、よろしくお願いします。

Aベストアンサー

eclipse なんかの初期設定だと、APIドキュメントはネット上のものが見れるようになっています。
API を zip でダウンロードしておきたいということなら、以下のページからダウンロードできます。(Java SE 7 を除く)
http://www.oracle.com/technetwork/jp/java/javase/documentation/api-jsp-316041-ja.html

---
Java SEのバージョン 1.3.0、1.4.0、5.0、6 の日本語ドキュメントは、こちらのページでアーカイブ・ファイルも提供しています。
---
このように書いてある部分のリンクをクリックしてください。

Qリフレクション 可変長引数メソッドの取得

リフレクションで、(1)の方のメソッドインスタンスを得たいとき、どういった方法が考えられますか?

//JDK 6.0

public Hoge {
void method1(String str, Object ...objs){}//(1)
void method1(String str, String str2){}//(2)
}

Hoge hoge = new Hoge();
Class c = hoge.getClass();
Method m12 = c.getMethod("method", String.class, String.class);
Method m11 = c.getMethod("method", ?? );

Aベストアンサー

No1.です、連投ですみません。
回答書いてる途中で、HogeクラスですでにObject配列がオーバーロードしている環境でObjectの可変長引数を定義したら、どうなるのか気になったので手元の環境で確認してみました。結論としては「先方の定義は有効で後方の定義部分で文法エラーが発生する。」みたいです。

↓が確認したソース
import java.lang.reflect.Method;

public class Hoge {
public Hoge() {
}
public void method1(String str, Object[] obj){
System.out.println("CC");
}
//↓の部分ですでに定義されているという文法エラー
public void method1(String str, Object ...objs){
System.out.println("AA");
}
public void method1(String str, String str2){
System.out.println("BB");
}
public static void main(String[] args) throws Exception{
Hoge hoge = new Hoge();
Class c = hoge.getClass();
Method m12 = c.getMethod("method1", String.class, String.class);
Method m11 = c.getMethod("method1", String.class,Object[].class );
m11.invoke(hoge,new Object[]{"",new Object[0]});
}
}

環境 NetBeans 5.0 で確認

あと最後にリフレクションでメソッドの呼び出し引数の型の定義方法が分からない場合はClass#getDeclaredMethodsで全てのメソッドを取得しての該当のメソッドの parameterTyps を調査すれば分かります。

No1.です、連投ですみません。
回答書いてる途中で、HogeクラスですでにObject配列がオーバーロードしている環境でObjectの可変長引数を定義したら、どうなるのか気になったので手元の環境で確認してみました。結論としては「先方の定義は有効で後方の定義部分で文法エラーが発生する。」みたいです。

↓が確認したソース
import java.lang.reflect.Method;

public class Hoge {
public Hoge() {
}
public void method1(String str, Object[] obj){
System.out.println("CC");
...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報