Java-创建类型为的实例类?

Java-创建类型为的实例类?,java,types,grid,record,Java,Types,Grid,Record,我花了几天的时间研究这个问题,不幸的是,我找不到一个答案 1.不适用于我的使用,或 2.需要大量的这方面的知识 这就是我的问题: 在Java中,某些类似记录的类(如ArrayList)可以在创建它们的新实例时设置为类型: ArrayList<Integer> list = new ArrayList<Integer>(); 它创建了一个双重网格。但我不想这么做-我希望能够创建一个由整数、浮点数、双精度、字符或字符串组成的网格,我希望采用以下形式: Grid<Dou

我花了几天的时间研究这个问题,不幸的是,我找不到一个答案 1.不适用于我的使用,或 2.需要大量的这方面的知识 这就是我的问题: 在Java中,某些类似记录的类(如ArrayList)可以在创建它们的新实例时设置为类型:

ArrayList<Integer> list = new ArrayList<Integer>();
它创建了一个双重网格。但我不想这么做-我希望能够创建一个由整数、浮点数、双精度、字符或字符串组成的网格,我希望采用以下形式:

Grid<Double> map = new Grid<Double>();
or
Grid<String> map = new Grid<String>();
Grid map=new Grid();
或
网格映射=新网格();
然后将一些返回方法和变量的数据类型(如双[]值转换为字符串[]值)更改为

那么,我该如何将“values”变量的代码重写为这些变量中的任何一个呢?我是否可以将其改为“私有对象[][]”?然后我如何检查它是什么数据类型?当然,我的操作(加上“clear()”方法)取决于数据类型,因此我如何检查它是什么(例如,设置clear()以将值设置为0 if int,但“if String”,或者让方法“toArray()”为整数、浮点、字符串、字符或双精度)

我现在根本不知道这些元素或类型是如何工作的,我想很快地了解它,所以请给出完整的代码块和描述

编辑:我有一个轻微的,可能是愚蠢的想法。将事物初始化为对象,然后将它们转换为E工作吗?例如:

public class Grid<E>{
    private Object[][] values;

    public Grid(){
        this.sizeX = 10;
        this.sizeY = 10;
        this.values = new Object[this.sizeX][this.sizeY];
        this.clear();
    }

    public E toArray(){
        return (E[][]) this.values.clone();
    }

    public E get(int x, int y){
         return (E) values[x][y];
    }

    public void set(int x, int y, E value){
        this.values[x][y] = value;
    }
}
公共类网格{
私有对象[][]值;
公共电网(){
这个.sizeX=10;
这个.sizeY=10;
this.values=新对象[this.sizeX][this.sizeY];
这个.clear();
}
公共E toArray(){
返回(E[])this.values.clone();
}
公共E-get(整数x,整数y){
返回(E)值[x][y];
}
公共无效集(int x,int y,E值){
此。值[x][y]=值;
}
}

如果上述方法有效/几乎有效,你能告诉我它有什么问题吗?如果没有,请忽略它并回答原始问题:D

泛型Java教程比我解释得更好。请参阅

基本上,您可以从以下方面开始:

public class Grid<E> {
    private int sizeX;
    private int sizeY;
    private E[][] values;
公共类网格{
私家侦探;
私营企业;
私有E[][]值;

将“double”替换为“E”。

学习泛型没有捷径。答案中有指向教程的链接,但有一些注释:(1)如果有与特定类型相关的方法,则泛型不是答案(例如,如果类型为double,则进行计算。如果类型为string,则查找子字符串)它们适用于所有允许的类型都应该具有相同操作的类。(2)泛型和数组不能很好地结合在一起。(3)基本上没有办法检查泛型类的基类型是什么。我发现了我遇到的问题。现在我知道它叫做泛型,我设法让一切都正常工作。你为什么说泛型和数组不能很好地结合在一起?参见示例。
Grid<Double> map = new Grid<Double>();
or
Grid<String> map = new Grid<String>();
public class Grid<E>{
    private Object[][] values;

    public Grid(){
        this.sizeX = 10;
        this.sizeY = 10;
        this.values = new Object[this.sizeX][this.sizeY];
        this.clear();
    }

    public E toArray(){
        return (E[][]) this.values.clone();
    }

    public E get(int x, int y){
         return (E) values[x][y];
    }

    public void set(int x, int y, E value){
        this.values[x][y] = value;
    }
}
public class Grid<E> {
    private int sizeX;
    private int sizeY;
    private E[][] values;