嘿,我刚刚开始学习 Java,我将很快参加一门课程(是的,我是个书呆子,我在开始上课之前就学习了)。我想把一些概念塞在一起,以了解 Java 中的一切是如何协同工作的。
现在,我想做的是一个简单的 Shape(法语中的 Forme)类,它至少有 1-2 个继承自它的类,并在集合对象中创建一些实例。我也想让这些类泛型来尝试一下。那是我遇到麻烦的部分。
我非常习惯 C++,所以这可能是混乱所在,但似乎我不能使用泛型,例如,我可以指定维度将是,比如,整数或双精度或浮点数或其他. 可能吗 ?
base
下面的 GetArea() 方法因为和无法编译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..)使工作泛型?