• ベストアンサー

javaのエラーに関する質問 よろしくお願いします

 こんにちは。どなたかJavaのエラーに詳しい方はどうか教えていただけないでしょうか?本にも載ってなくて、調べようがないので困っています。  エラーの内容は    注 ~の操作は未チェックまたは安全ではありません  注 詳細については -xlint:unchechkedオプションを指定して再コンパイルしてください。    と表示されてしまいます。ソースコードの中に  Hashtable ht=new hashtable(); ~  ht.put( , ); とHashtableを使い、put()に値を入れて実行すると注~のようなエラーが出てしまいます。 全くわかりません。なにをすればいいのでしょうか?どうかよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • neko_noko
  • ベストアンサー率45% (146/319)
回答No.2

Hashtableのように何でも入れられる(Objectを入れられる)コレクションクラスは、 何かと危険やメンドウがあるので、型を指定させるようにしているのです。 「ジェネリクス」とか「Genericity」というようにも言われます。 >本にも載ってなくて、調べようがないので困っています Java5以降しか対応していないので、Java5未対応の書籍だと載ってないですね。 どーでもいいですが、厳密に言うと、これはエラーではなく、警告です。 おそらくclassファイルはできているはずですし、実行もできるはず。 でも、Java5以降を使うなら型は指定することをお勧めします。

参考URL:
http://www.techscore.com/tech/J2SE/JavaLanguage/1.html
kepo2007
質問者

お礼

 わざわざご回答ありがとうございます。一応本に<>のことがのっていました。ですが、Genericityなどの用語は一切かいてありませんでした。  これはエラーではなく警告というんですか?初めて聞きました。  初心者で興味本位にJavaを始めて学校に通ってるのですが、途中から恐ろしくなってきました。こんなに難しいものだとは思わなかったので。  参考URLも見てみようと思います。  ご回答ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

>全くわかりません。なにをすればいいのでしょうか?どうかよろしくお願いします。 Generics を使え。ということじゃない? Hashtable<string, string> ht = new Hashtable<string,string>(); ht.put("hello", "world"); な風に。

kepo2007
質問者

お礼

 すいません。<>のことが本に載っていました。もうちょと自分で調べてから質問します。わざわざご回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • javaプログラムコンパイルはできて、実行もできるが。

    注: SortTest.java の操作は、未チェックまたは安全ではありません。 注: 詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください。 と、メッセージが出ます。 どうやら Arrays.sort(); 関数を使うと出るようなのですが、どうしたらいいですか?

  • javaのhashtableに関する質問です

    以前にも質問させていただいた者ですが、またどなたかよろしくお願いします。  javaのhashtableを使いたいのですが、ソースコードの中で int a[]= char b[]= Hashtable<int,char> hash=new Hashtable<int,char>();       ~ hash.put(int[a],char[b]); と、put(,)の中にint型とchar型の配列を格納することは可能でしょうか?どうしてもエラーが出てしまいます。   どうしたらいいのでしょうか?

  • コンパイルができないのですが・・・

    JAVA初心者です!!コンパイルをしようと思うのですが、今までできたのに突然コンパイルエラーが起きました。わかる方いましたら教えていただけないでしょうか? メッセージは以下のとおりです。 注:MyFrame.javaは推奨されないAPIを使用またはオーバーライドしています。 注:詳細については、-Xlint:deprecation オプションを指定して再コンパイルしてください。

    • ベストアンサー
    • Java
  • J2SE5.0でのArrayListの警告

    JAVAを始めたばかりの、初心者です。 ArrayListを使って、簡単なプログラムを作成して、 コンパイルをしたのですが、 注: MyClass1.java の操作は、未チェックまたは安全ではありません。 注: 詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてくださ い。 と、出ました。(一応、実行したら、動きました。) 参考書で、調べたら、J2SE5.0では、 ArrayListを使うと、この警告が出るとは、書いてあったのですが、詳しくは、載ってなくて、この警告の意味が全く分かりませんでした。 この警告の意味とはずし方を、教えてください。 お願いします。 長文で、失礼しました。

    • ベストアンサー
    • Java
  • Javaプログラミング1001Tipsより。

    Javaプログラミング1001Tipsの書籍にある例文をコンパイルしようとすると。 注:practice.javaは推奨されないAPIを使用またはオーバーライドしています。 注:詳細については-deprecationオプションをしていして再コンパイルしてください。 というエラーがでます。普通にコンパイルして実行するだけでは駄目なのでしょうか? import java.util.Date; class practice { public static void main(String arg[]) { Date now= new Date(); System.out.println(now.toGMTString().substring(12)); System.out.println(now.getHours() + ":" + now.getMinutes()); } }

  • GOF本のStrategyのJava版での質問です。

    GOF本のStrategyのJava版での質問です。 下記を実行すると、クラスCompositionのbreakCountの関数を実行した所で、NullPointerExceptionが発生してしまいます。(SimpleCompositorのcomposeの戻り値である1を期待しているのですが?)お分かりになる方、御教示ください。 //ここから public class Main { public static void main(String[] args) { Composition quick = new Composition(new SimpleCompositor()); quick.repair(); } } class Composition { public Composition(Compositor c) { _components = new Vector(); _lineBreaks = new Vector(); } public void repair() { Hashtable natural = new Hashtable(); Hashtable stretchability = new Hashtable(); Hashtable shrinkability = new Hashtable(); int componentCount; Hashtable breaks = new Hashtable(); // 初期化 componentCount = 0; _lineWidth = 0; natural.put("natural1", new Integer(0)); stretchability.put("stretchability1", new Integer(0)); shrinkability.put("shrinkability1", new Integer(0)); breaks.put("breaks1", new Integer(0)); // ブレーク位置を決める int breakCount; breakCount = _compositor.compose( natural, stretchability, shrinkability, componentCount, _lineWidth, breaks ); //  System.out.println(breakCount); } private Compositor _compositor; private Vector _components; private int _componentCount; private int _lineWidth; private Vector _lineBreaks; private int _lineCount; } abstract class Compositor { public Compositor() { } public abstract int compose( Hashtable natural, Hashtable stretch, Hashtable shrink, int componentCount, int lineWidth, Hashtable breaks ); } class SimpleCompositor extends Compositor { public SimpleCompositor() { } public int compose( Hashtable natural, Hashtable stretch, Hashtable shrink, int componentCount, int lineWidth, Hashtable breaks ) { // ... return 1; } }

    • ベストアンサー
    • Java
  • Javaのコンパイルについて

    コンパイルを試したのですが、どうもうまくいきませんでした。 コマンドプロンプトの画面に ----------------------------------------------------------------- 注意: ●●●.japaは推奨されないAPIを使用またはオーバーライドしています。 注意:詳細は、Xlint:deprecationオプションを指定して再コンパイルしてください。 ----------------------------------------------------------------- と表示されます。 原因が分かりませんでした。よろしくお願いします。教えてください。

  • マルチスレッドプログラムからのファイル出力

    VM:java1.4.2 OS:WindowsXp マルチスレッドのプログラムで、一つのファイルにテキストの出力を行うところで、うまくいかないところがあります。 <ソースファイル> import java.io.*; import java.util.*; import java.text.*; public class ThreadIppai { public static void main(String[] args) { for (int i = 0; i < 100; i++) { Thread thread = new ThreadHontai(); thread.start(); } } } class ThreadHontai extends Thread { public void run() { try { for (int i = 0; i < 500; i++) { BufferedWriter bw = new BufferedWriter(new FileWriter( "D:\\out.log", true)); String msg = (String) Values.ht.get(String.valueOf((int) (Math.random() * 10)).substring(0, 1)) + "\n"; bw.write(msg, 0, msg.length()); bw.flush(); bw.close(); } } catch (Exception e) { e.printStackTrace(); } } } class Values { public static Hashtable ht = new Hashtable(); static { // ht.put("0", "0000000000"); // ht.put("1", "1111111111"); // ht.put("2", "2222222222"); // ht.put("3", "3333333333"); // ht.put("4", "4444444444"); // ht.put("5", "5555555555"); // ht.put("6", "6666666666"); // ht.put("7", "7777777777"); // ht.put("8", "8888888888"); // ht.put("9", "9999999999"); ht.put("0", "0"); ht.put("1", "11"); ht.put("2", "222"); ht.put("3", "3333"); ht.put("4", "44444"); ht.put("5", "555555"); ht.put("6", "6666666"); ht.put("7", "77777777"); ht.put("8", "888888888"); ht.put("9", "9999999999"); } } <問題点> ファイルに出力された結果をみると、テキストの一部が欠けていたり、改行がされない行があったりします。 おそらく、同期処理を加えてないからだとは思うのですが・・・。(質問に続く) <質問1> テキストの一部が欠けたり、改行されない行が発生する原因はなぜでしょうか? たとえば、「0」と「11」を出力するとき、同時に複数のスレッドが書き込んだ場合、「101」となるのは、なんとなく分かります。 しかし、これが「01」のように、出力されるべき文字が出力されないという現象が発生してます。 <質問2> htにputする値の文字列長が、すべて異なっていますが、これをコメントアウトされている行のように、すべて同じ文字列長に した場合、上記の問題は発生しなくなります。 この原因はなんでしょうか? <質問3> この問題を、ThreadHontaiクラスのfor文の中だけの変更で解決することは可能でしょうか?(極力手を加えずに) synchronizedブロックの追加でいけるのかと思いましたが、試行錯誤の結果うまくいきませんでした。 以上、よろしくお願いします。

  • javaのコンパイルエラーについて質問

    macにてjavaを学習し始めた初心者です 真っ先に習うHello Worldのソースコードを書き、 class Hello01 { public static void main(String args[]){ System.out.printin("Hello Java World!"); } } コンパイルをしたところ以下のようなコンパイルエラーが表示されました Hello01.java:3: cannot find symbol symbol : method printin(java.lang.String) location: class java.io.PrintStream System.out.printin("Hello Java World!"); ^ どこかソースに欠けてる箇所があるのだと思いますが、 どこが間違っているのかいまいち分かりません。 どなたか分かる方、教えていただけますか? よろしくお願いします

    • 締切済み
    • Mac
  • -Xlint:uncheckedオプションと大きな概念?

    Javac test.javaとすると、以下のようになります。 test.javaの操作は、未チェックまたは安全ではありません。 -Xlint:uncheckedオプションを指定して再コンパイルして下さい オプションをつけて再コンパイルすると、警告が表示されます。 一連のこの安全でないという概念がわからずいわれたままにしていますが、どのように理解すればよいのでしょうか? 玄人の方や教えるのが旨い方、お願いいたします。

    • ベストアンサー
    • Java