題名どおりなのですが、まず以下のようなソースを
書きました。

import java.util.*;

class Rab{
private String name;
private int number;

public Rab(){
name= "";
number=0;
}

public void setName(String name){
this.name=name;
}

public void setNumber(int number){
this.number=number;
}

public String getName(){
return name;
}

public int getNumber(){
return number;
}

}

public class Rabexc{
public static void main(String[] args){
Rab[] rab=new Rab[5];
for(int i=0; i<5; i++){
rab[i]=new Rab();
}
rab[0].setName("Owner");
rab[1].setName("Adminstrator");
rab[0].setNumber(1);
rab[1].setNumber(2);
ArrayList al=new ArrayList();
al.add(rab[0]);
al.add(rab[1]);
for(int i=0; i<al.size(); i++){
rab[i]=(Rab)al.get(i);
System.out.println("name: "+rab[i].getName()+"number: "+rab[i].getNumber());
}
}
}

これを実行してみたところ、
Rabexc.java:41: 警告:[unchecked] raw 型 java.util.ArrayList のメンバとしての add
(E) への無検査呼び出しです。
al.add(rab[0]);
^
Rabexc.java:42: 警告:[unchecked] raw 型 java.util.ArrayList のメンバとしての add
(E) への無検査呼び出しです。
al.add(rab[1]);
^
警告 2 個

という警告が出てコンパイルできません。

サイト・参考書なども調べて考えていたのですが、いまいち問題の解決法が浮かばないため、詳しい方いましたら教えていただけると幸いです。
宜しくお願い致します。

A 回答 (1件)

JDKは、Java 5.0以降(1.5以降)をお使いですね?


JavaSEでは、5.0以降、総称型というのが用意されています。コレクション・フレームワーク関係(要するにArrayListのようにどんなオブジェクトでも入れておけるものです)を使用する場合には、この総称型を使って保管するクラスの種類を特定しておけるようになっています。

ArrayList al=new ArrayList();

ArrayList<Rab> al = new ArrayList<Rab>();

このようにしてみてください。
詳細は、「総称型」または「Generic」で調べてみるとよいでしょう。
    • good
    • 0

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

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

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

Qあのいいずらいんですが 私は、この前体育倉庫で片付けをしていたら先生が 来て「えらいなぁー」っ

あのいいずらいんですが
私は、この前体育倉庫で片付けをしていたら
先生が 来て「えらいなぁー」
って言ってくださった後に
あのさぁーと言って「ちょっとおっぱい見せてくれない」?私は、断ったんですが
いいじぁーちょとくらいと言って
無理やり制服とスカートを脱がして来て
セックスまでやられましたお母さんに相談したほうが言いてますか?
本音でお願いします

Aベストアンサー

お母さんに相談して、学校にも言ったほうがいいと思います。

これは大問題ですよ!!

QJAVA  ArrayListからArrayListへのコピー

java で、ArrayListからArrayListへコピーはできるのでしょうか?
clone()というメソッドがありましたが、よくわからず、コピーできてないようなので伺いました。

ベーシックではできるようですが、JAVAでもできるのでしょうか?
どなたか教えていただけませんでしょうか?

Aベストアンサー

ArrayList li = new ArrayList(list);
でよいでのでは?

Q再帰呼び出しを使いますか?

趣味でプログラムをかじる程度なのですが、今まで自分はプログラムを作っていて再帰呼び出しを使ったことがありませんが、みなさんは良く使うのでしょうか?

なかなか再帰呼び出しを考えるのが難しく自分のプログラムで適用すると良いところなど思い浮かびません。
再帰呼び出しをすると何か利点とかあるのでしょうか?
再帰呼び出しで無いと作るのが難しいプログラムなど今までありましたか?あればどんな処理だったかなど教えてください。

Aベストアンサー

すでにいっぱい回答がついていますが、わたしもつられてしまいました。
思うに、「1つ処理するごとに処理対象が減っていく」ものはループがとくいで、
- 処理対象全体をつかめない
- 1つ処理すると、残りの処理対象が増えたりする
- しかも増えた分は、元のものと構造が似ている
という場合に再帰呼び出しの方が簡単にかけるんだと思います。
みなさんが挙げている階層フォルダみたいなツリー構造は、まさにこの典型例ですね。

Qjavaのコンパイルがうまくいきません。

現在javaのFileUploadクラスを使用してファイルをサーバへアップロードするアプリケーションを作成しております。
コンパイルにはANTを使用しています。

動作環境:
WindowsXP sp2
jdk1.5.0_10
tomcat5.5.23
Apache Ant 1.7.0


現象:
作成したjavaファイルをコンパイルしようとするとDiskFileUploadクラスとFileItemクラスまたHttpSessionクラスのシンボルを見つけられませんとなりコンパイルが通りません。

環境変数:
JAVA_HOME = "c:\Program Files\java\jdk1.5.0_10"
ANT_HOME = "C:\Program Files\Apache Software Foundation\apache-ant-1.7.0"
CATALINA_HOME = "C:\Program Files\Apache Software Foundation\Tomcat 5.5"
path = "%JAVA_HOME%\bin;C:\Program Files\Apache Software Foundation\apache-ant-1.7.0\bin"
CLASSPATH = ".;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\common\lib\servlet-api.jar;%CATALINA_HOME%\common\lib\commons-fileupload-1.2.jar;%CATALINA_HOME%\common\lib\commons-io-1.3.2.jar"
となります。
tomcatのcommon\libがうまく参照できていないからなのでしょうか?
とすればそれはなぜなのでしょうか?
ご教授いただければと思います。よろしくお願いいたします。

現在javaのFileUploadクラスを使用してファイルをサーバへアップロードするアプリケーションを作成しております。
コンパイルにはANTを使用しています。

動作環境:
WindowsXP sp2
jdk1.5.0_10
tomcat5.5.23
Apache Ant 1.7.0


現象:
作成したjavaファイルをコンパイルしようとするとDiskFileUploadクラスとFileItemクラスまたHttpSessionクラスのシンボルを見つけられませんとなりコンパイルが通りません。

環境変数:
JAVA_HOME = "c:\Program Files\java\jdk1.5.0_10"
ANT_HOME = "C:\Progra...続きを読む

Aベストアンサー

antのjavacタスクで、classpathとかclasspathref属性、もしくはclasspath要素なんかはどんな風に設定されてます?

Q呼び出しさんと結婚するには

私は、大相撲が大好きなんです。もしも男だったなら相撲の呼び出しさんになりたいと思っています。しかしながら、私は女なのでその夢は叶いません。なので呼び出しさんと結婚することが私の夢なのです。でもどうしたら呼び出しさんと出会ったり、お付き合いをすることができるのかわかりません。回答よろしくお願いします。

Aベストアンサー

両国あたりをうろうろしていれば相撲関係者の行きつけの店があるはず。
そこに出入りして顔なじみになれば、誰か紹介してもらえるんじゃないかな~とか思うんですが。

それかお見合い相談所や出会い系で「呼び出しさん」限定で探す。
好みの呼び出しさんの連絡先を相撲協会に聞いて手紙を出す。

これぐらいなら速攻思いつきますが、これらを全てやった上で
それでも「出会えない」のでしょうか?
職業限定で探すのもいいけど、もし相手がその職業やめたらどうするんだろう?とも思うんですが・・・。

QJavaソースコードをコンパイルするJavaプログラム

タイトルの通りですが、Javaソースコードをコンパイルし、実行するJavaプログラムを作りたいのですが、なにか有効な方法はありますでしょうか。
Runtime.getRuntime().exec( "javac Test.java" );
のようにすると、エラーになります。

なにか良い方法をご存知でしたら、よろしくお願いします。

Aベストアンサー

Javaのソースコードをコンパイルするのでしたら、Runtime.getRuntime().exec()を使ってもいいですけど、com.sun.tools.javacを使っては? これは、JDKのjavacコマンドが実行されるときに内部から呼び出されるコンパイルクラスです。

// 以下をimport
// import com.sun.tools.javac.*;

Main main = new Main();
String[] param = {"./Sample.java"};
main.compile(param);

例えばこんな具合にしてcom.sun.tools.javacのMainインスタンスを作成し、ファイルパスの配列を引数にしてcompileを呼び出してやります。わざわざexecで外部のタスクとして起動するより、こちらのほうがスマートかと。

Qビジネスフォンαの内線呼び出しについて

NTTのビジネスフォンα を設置したばかりですが、一つの電話から他の電話へ、呼び出しをする事はできますか?「呼び出し」とは私が連絡したい内線番号を押し”相手の電話は受話器を取らずに、スピーカーから私の呼び出し声を聞く”と言う事です。分かりづらい説明ですが、お分かりの方がいらっしゃいましたら教えてください。よろしくお願いします。

Aベストアンサー

NTTαRXでしょうか?
それでしたら、内線呼び出し中に数字の「0」を押すことで、音声呼び出しに切り替わると思いますよ。
(初期設定で最初から信号音か音声による呼び出しかを設定できますが、電話工事屋さんしかいじれません)

普通だと内線呼び出し音が鳴りますよね、その最中に「0」を押すんです。そうすると、ちょっと間を置いて ピーピー という音が鳴ります。
それから、お話ください。相手の内線電話機のスピーカーからあなたの声が流れるはずです。

QJavaのプログラム内で、javaファイルをコンパイルしたい

タイトルの通り、javaファイルをコンパイルする
Javaアプリケーションを作りたいんです。
こういうことって、できますでしょうか…?
やり方がわかる方がいましたら教えてください。
宜しくお願いします。

Aベストアンサー

やったわけじゃないですけど、これでできるんじゃないですか?
Runtime.getRuntime().exec()

呼び出しはバッチファイルにしておいてクラスパスなどの設定も一緒に書いておけばいいでしょう。

Qサブルーチンの引数の、呼び出し側の呼称を得る

サブルーチンの呼び出し、例えば
sr($p);
という呼び出しがあった場合、サブルーチンsb()の中で、引数は@_として扱われて、
 $p
の値などは
 $_
で知ることが出来ます。

それではサブルーチンsb()の方から、
 $_
が呼び出し側で何と呼ばれているか知ることは出来るのでしょうか?

つまり、この場合、$_は呼び出し側で
 $p
と呼ばれているわけですが、この呼称をサブルーチン側で知ることは出来るでしょうか。

Aベストアンサー

そもそもサブルーチン内で
呼び出しもとの実引数の「変数名」を
「本当に必要」な状況そのものを想像できません.
質問の文面とものの言い方から初心者さんではないようなので
もしかするとものすごい状況にいるのかもしれませんが・・・
そうすると,以下に書くようなことは
とっくに検討済みの可能性もありますね

サブルーチンの中で呼び出しもとの変数をいじりたいのであれば
$a=10;
sub { $_[0]++ }->($a);
print $a;
とかすれば,可能ですね(Perlはcall by referenceだから).
もっともこれは,具体的な値そのものを渡せばエラーになります.

ただ「参照渡し」なので,$_[0]と呼び出し元の変数の
実体は同じ,つまり,\$_[0]と\$aは同じだから
\$_[0]と同じ値を持つものをシンボルテーブルから
無理やり探し出すことは可能だと思われます.
$a=10;
sub {foreach $val (values %main::){
*glob=$val;
$temp=$val;
if (\$_[0]==\$glob) {
$temp=~s/\*main:://;
print "argument: \$$temp\n"
}
}
} ->($a);
こんな感じ.
ただし,シンボルテーブルを読んでるわけだから,
レキシカルな変数は相手にできませんし,
この例だと引数はスカラであることが前提です.
けど,リファレンスを渡してあげれば,細工すれば
スカラ以外でも処理できるでしょう.
けど,シンボルテーブルで遊ぶ以外の意味はなさげです.
なお,これは具体的な値を渡すと何も出力されませんし,
レキシカルな変数を相手にするにはどうすればいいでしょうね?
「レキシカルな変数のシンボルテーブル」?
BモジュールとかPadWalkwerとかの「黒魔術の世界」に
浸ればできるのかもしれませんが,私レベルでは分かりません.
#use strictとの両立方法・・・わかりません.

いっそのこと,引数そのものに
もっと細かい情報を持たせるというのもありかもしれません.
Scalar::Utilのdualvar関数を使って
自分自身の情報を変数にもたせるというのもありかも.
もしかするとattributeを利用してもいいのかも
#この段落の内容は実験してない想像にすぎません.

そして,「変数名」を取得して,
サブルーチン内で「ソフトリファレンス」したいのでしょうか?
つまり,
$fred = 23;
$varname = "fred";
++$$varname;
というようなことをしたいということでしょうか?
これは,perldoc perfaq7で
How can I use a variable as a variable name?
の項目をよめば
「Beginners often think」で
「very bad idea」だと詳細な説明があります.
こんなことは先刻承知かもしれませんが.

まあ,なにはともかく
>人間的にみれば第1引数に第2引数の情報は全て入っているのに
これには私も同意しませんけどねえ.
仮に「人間的に入ってても」そもそもPerlは人間じゃないですし,
すべての情報が入っててもそれが渡されるわけではないですな.
それと
>このコーディングは私の無知を象徴することになってしまうので、
無知をさらけ出すよりも
メンテナンスや拡張が困難なコードを残すほうが
私はいやです.
#というか・・・Perlじゃないけど
#メンテナンス困難なコードのバグ取りを
#よくさせられるから・・・
メンテナンス不可の簡潔なコードよりも
メンテナンスが楽な可読性の高い冗長・饒舌なコードのほうが
ずっといいとおもうのは私だけではないと思います.

そもそもサブルーチン内で
呼び出しもとの実引数の「変数名」を
「本当に必要」な状況そのものを想像できません.
質問の文面とものの言い方から初心者さんではないようなので
もしかするとものすごい状況にいるのかもしれませんが・・・
そうすると,以下に書くようなことは
とっくに検討済みの可能性もありますね

サブルーチンの中で呼び出しもとの変数をいじりたいのであれば
$a=10;
sub { $_[0]++ }->($a);
print $a;
とかすれば,可能ですね(Perlはcall by referenceだから).
もっともこれ...続きを読む

QJAVAでC/C++の条件コンパイルのようなことはできないでしょうか?

JAVAでC/C++の条件コンパイルのようなことはできないでしょうか?


実行時に判断するのじゃなくて、
コンパイル時に判断するやり方ないですか?
開発ツール等の環境設定でやるとかじゃなくて・・。
C/C++の条件コンパイルのように、
ソースコーディングすることで、行うやり方。


(たとえば)

もし、JDK1.4よりもバージョンがひくければ、


JDK1.3以前でも、存在するクラスを使って
メイクする。
その代わりすごいおそーいけどね・・・。


もし、JDK1.4以上であれば

とても、パフォーマンスのよいクラスを使った
コードをメイクする。
その代わりこれは1.4以上でないと
コンパイルできないけどね。





みたいな感じで、
実行時じゃなくて、
コンパイル時にソースコード
で条件分岐させてしまうやりかたないですかぁ。
(ないだろうなぁ。)


args[0]で起動時の引数で
実行時判断させようとしても、
そもそも、1.4からでてきたクラスとかだと
1.3ではコンパイルすらできない


あと、
できれば、したい実現したい機能だけど、
それをするには1.4から登場した
クラスを使わなければできないので、
1.3ではあきらめてもらい(そういう仕様にしてもらって)
しないようにしようと思ったとする。
そして、
その処理が入ってない1.3版と、
その処理が入ってると1.4版とで、
その差分のせいで、
ソースのバージョンを2種類設ける
ということを絶対にやりたくない時とか。

どうするんだろう・・。

JAVAでC/C++の条件コンパイルのようなことはできないでしょうか?


実行時に判断するのじゃなくて、
コンパイル時に判断するやり方ないですか?
開発ツール等の環境設定でやるとかじゃなくて・・。
C/C++の条件コンパイルのように、
ソースコーディングすることで、行うやり方。


(たとえば)

もし、JDK1.4よりもバージョンがひくければ、


JDK1.3以前でも、存在するクラスを使って
メイクする。
その代わりすごいおそーいけどね・・・。


もし、JDK1.4以上であれば

とても、パフォー...続きを読む

Aベストアンサー

できないようですが...
こちらの「-理由08- #if」のところに書かれているのが間違いなければ。
http://www.atmarkit.co.jp/fdotnet/special/java2cs/java2cs_03.html

参考URL:http://www.atmarkit.co.jp/fdotnet/special/java2cs/java2cs_03.html


人気Q&Aランキング