- ベストアンサー
ワイルドカード<?>と型パラメータ<T>の違いがすっきりしない
- Java初心者がワイルドカード<?>と型パラメータ<T>の違いを理解するのが難しい
- <T>と<?>の使い分けがわからない
- ワイルドカード<?>と型パラメータ<T>の使い方について教えてほしい
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- コンパイルできません
Javaを独習中の、初心者です。何方か、教えてください。 或る入門書で、「メソッドのパラメター化」との項目の中に、下記 サンプルプログラムが載っておりまして、その通りに、入力実行しましたが、「Generics.java:5: ';'がありません。return T.toString() data;」とのエラーメッセージが表示され、試行錯誤してみましたが、解りません。何処が、エラーなのかお教え頂ければ幸いです。 1 import java.util.Data; 2 3 class Generics { 4 public static <T> String geneMethod( T data ) { 5 return T.toString() data; 6 } 7 8 public static void main( String[] args ) { 9 String str = 10 Generics.<String>geneMethod("aaa"); 11 System.out.println( str); 12 Data data = 13 Generics.<Data>geneMethod( new Data()); 14 System.out.println( data ); 15 } 16 } 以上、宜しくお願い致します。
- ベストアンサー
- Java
- mainクラスのpublicの意味を教えて下さい
お早う御座います、JAVA初心者です、宜しくお願いします。 main クラスの public をコメントアウトしてもエラーもなく走ります。 これは、「public static void main(String[] args)」を持っているクラスを自動的に「main クラス」と判断しているということでしょうか。 ============================================================ class Sub { void disp() { System.out.println(" a "); } } /*public*/ class Main { public static void main(String[] args) { Sub s = new Sub(); s.disp(); } }
- ベストアンサー
- Java
- Genericsの型パラメータ
Genericsについて質問します。既存のクラスにGenericsをつけるとエラーになってしまい困っています。 A、Bという抽象クラスがあり、互いに互いのサブクラスを限定したいフィールドを持つという前提で下記のようなコードを考えました。 が、b.setA(this);で 制約の不一致:型TのメソッドsetB(?)は引数(B<T>)に適用できません。 というエラーが発生してしまいます。(Bクラスも同様) その通りに、Bクラスの?をAに変えると警告が発生してしまい、さらに<?>を追加するとやっとなくなり、Aクラスも同様に修正すると両方ともクラスのパラメータ部でエラーが発生してしまいます。 Genericsを使用した解決策を教えてください。お願いします。 pakcage sample; public abstract class A<T extends B<?>> { private T b; public void setB(T b){ this.b = b; if(b.getA() == null){ b.setA(this); } } } pakcage sample; public abstract class B<T extends A<?> { private T a; protected void setA(T a){ this.a = a; a.setB(this); } protected T getA(){ return this.a; } }
- ベストアンサー
- Java
- mainクラス内に書いたメソッドの宣言の仕方(staticの必要性)
java を勉強中の超初心者です、宜しくお願いします。 main と同じクラスに disp というメソッドを作成してやり、” void disp(int a , int b )”と書いてやりましたが、mainからアクセス出来ません。 そこで、” static void disp(int a , int b )” という風に” static ” を先頭につけてやりましたら、うまく動きました。 これは、mainメソッドから他のメソッドにアクセスする場合には、必ず” static ” をつけてやる必要があるということでしょうか。 ======================================================= class クラス練習 { public static void main(String[] args) { disp(5,10); } /*static*/ void disp(int a , int b ) { System.out.println("a+b = " + (a+b)); } }
- ベストアンサー
- Java
- Javaのプログラムについて教えてください!
Genericsを使ってエラーの出ないようにするにはどうすればいいですか? import java.util.*; public class Sample{ public static void main(String[] args){ ArrayList ary = new ArrayList(); ary.add("Mac"); ary.add("Wiindows"); ary.add("Linux"); for(Object str:ary){ System.out.println((String)str); } } }
- ベストアンサー
- Java
- 「型 ArrayList は総称ではありません・・・。」エラーについての問題です。
コンニチハ、javaの初心者s-unです。 Eclipse(Ver:3.1.1)でJavaのプログラムを書いています。 *********************************** import java.util.ArrayList; class collectionTest1{ public static void main(String args[]){ ArrayList<String> array = new ArrayList<String>(); } } *********************************** エラーメッセージは 「型 ArrayList は総称ではありません。引数 <String> でパラメーター化できません。」 JDK準拠>>コンパイラー準拠レベル5.0になっています。 原因をお教え頂けますと幸いです。 よろしくお願い申し上げます。
- ベストアンサー
- Java
- 初歩的な質問ですみません。
はじめまして。Javaの初心者です。 初歩的なことで、どうしてもわからないことがあります。 以下のような場合、 *************************************** class Oya { void func() { System.out.println("Oya"); } } class Ko extends Oya { Ko() { this.func(); } } class Main { public static void main(String[] args) { new Ko(); } } *************************************** Koクラスが初期化を完了していないのにもかかわらず func()メソッドを呼びさせてしまう理由がわかりません。なぜなのでしょうか?どうか教えてください。
- ベストアンサー
- Java
- C++で、クラスの受け渡しを行いたい
C++を現在勉強中です。 java は少しだけわかるのですが、 以下のjavaのコードをC++で実現する方法が わかりません。 ------------------------------------------- class test2 { private test2() { } public test2(String hoge) { } } class test1 { private void method1(test2 t2) { } public static void main(String[] args) { test1 t1 = new test1(); } } ------------------------------------------- ようは、test2クラスのデフォルトコンストラクタを不可視にしておきながら、呼び出し側でどのように定義すればよいのかがわかりません。 どなたか回答お願いします。
- ベストアンサー
- C・C++・C#
- 実行の順番を教えてください。
現在JAVAの学習をおこなっていて、参考書で勉強しています。 しかし、以下の3つのソースコードはどの順番で実行されているか理解できておりません。 すみませんが、実行の順番を教えて頂けないでしょうか。 実行の順に数字を振ったりしていただけますと特に嬉しいです。 お願いします。 ※サンプル1 class testA{ testB b; testA(){ b=new testB(this); } } class testB{ testA a; testB(testA a){ this.a=a; } } class testAll{ public static void main(String args[]){ new testAll().banana(); //ソースコード } void banana(){ testA test = new testA(); } } ※サンプル2 public class A{ public static void apple(Integer i){ int ta =i.intValue(); ta+=3 ; i=new Integer(ta); } public static void main(String args[]){ Integer i = new Integer (0); apple(i); System.out.println(i.intValue()); } } ※サンプル3 public class Test{ public static void main (String args[]){ class orange{ public int i =9; } Object o=(Object)new orange(); orange orange = (orange)o; System.out.println("i="+orange.i); } }
- ベストアンサー
- Java
- Javaについて教えてください!
sampleパッケージに属するMain.javaとSub.javaがあり、Main.javaのmainはSub.javaのsubメソッドを呼び出して「OK」と表示させるプログラムを教えてください! //Main.java package sample; public class Main{ public static void main(String[] args){ Sub.sub(); }} //Sub.java package sample; public class Sub{ static String str = "OK"; public static void sub(){ System.out.println(str); }} String型の変数strはクラス変数で行いたいのですが、どこを改善すれば良いでしょうか?
- ベストアンサー
- Java