ねえ、私はすぐに受講するコースでJavaを始めたばかりです(ええ、私はオタクです。クラスを始める前に勉強しています)。Javaですべてがどのように連携するかを学ぶために、いくつかの概念をまとめたいと思いました。
さて、私がやりたかったのは、単純なShape(フランス語でForme)クラスです。このクラスからは、少なくとも1〜2のクラスが継承され、コレクションオブジェクト内にいくつかのインスタンスが作成されます。また、それらのクラスをジェネリックにして、それも試してみたかったのです。それは私が問題を抱えている部分です。
私はC++に非常に慣れているので、混乱が生じる可能性がありますが、ジェネリックを使用できないようです。たとえば、ディメンションを整数、ダブル、フロートなどに指定できます。 。出来ますか ?
以下のGetArea()メソッドは、base
とのためにコンパイルできませんhauteur
。
package testconcepts;
import java.util.*;
import java.lang.*;
abstract class Forme <T extends Number> {
protected String nom_forme;
String NomForme() { return nom_forme; }
abstract Double GetArea();
}
class Triangle <T extends Number> extends Forme {
protected T base, hauteur;
Triangle() {
this.nom_forme = "TRIANGLE";
}
@Override
Double GetArea() { return base * hauteur / 2; }
T GetBase() { return base; }
T GetHauteur() { return hauteur; }
void SetBase(T base) { this.base = base; }
void SetHauteur(T hauteur) { this.hauteur = hauteur; }
}
public class TestConceptsJava {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add(new Triangle<Double>());
}
}
型の問題のため、コンストラクターで0に割り当てることもできないことに注意してください。
また、非常によく似たトピックがあることは知っていますが、他の質問ではまだ問題の解決策を見つけていません。
TLDRプリミティブ型ラッパー(Double、Integer ..)を使用してジェネリックスを機能させるにはどうすればよいですか?