如何在Java中检查变量的类型?

2022-08-31 07:25:35

如何检查以确保我的变量是int,数组,双精度等?

编辑:例如,如何检查变量是否为数组?有没有一些功能可以做到这一点?


答案 1

Java是一种静态类型语言,因此编译器会为您完成大部分检查。将变量声明为特定类型后,编译器将确保仅为其分配该类型的值(或该类型的子类型的值)。

您给出的示例(,数组,)这些都是基元,并且没有它们的子类型。因此,如果将变量声明为 :intdoubleint

int x;

您可以确定它只会包含值。int

但是,如果将变量声明为 ,则该变量可能会包含 的子类型。这些示例包括 、 等。ListListArrayListLinkedList

如果您确实有一个变量,并且您需要知道它是否是 一个 ,则可以执行以下操作:ListArrayList

List y;
...
if (y instanceof ArrayList) { 
  ...its and ArrayList...
}

但是,如果你发现自己认为你需要这样做,你可能需要重新思考你的方法。在大多数情况下,如果您遵循面向对象的原则,则不需要这样做。当然,每条规则都有例外。


答案 2

实际上,通过滥用Java的方法重载能力,很容易滚动自己的测试器。虽然我仍然很好奇sdk中是否有官方方法。

例:

class Typetester {
    void printType(byte x) {
        System.out.println(x + " is an byte");
    }
    void printType(int x) {
        System.out.println(x + " is an int");
    }
    void printType(float x) {
        System.out.println(x + " is an float");
    }
    void printType(double x) {
        System.out.println(x + " is an double");
    }
    void printType(char x) {
        System.out.println(x + " is an char");
    }
}

然后:

Typetester t = new Typetester();
t.printType( yourVariable );

推荐