Java 确定';类型';在爪哇

Java 确定';类型';在爪哇,java,types,Java,Types,我是Java新手,Java中有没有告诉你对象类型的方法 例如,在Python中,如果键入 type(34)它将返回int type('abc')将返回string 我到处找,但找不到办法。有什么帮助吗 非常感谢 运算符是执行运行时类型检查的最简便的方法: if (someObject instanceof String) { // It's a string } 或者,在任何实例上,您都可以使用,它为您提供对象类型的类实例 Class c = someObject.getClass()

我是Java新手,Java中有没有告诉你对象类型的方法

例如,在Python中,如果键入

type(34)
它将返回
int

type('abc')
将返回
string

我到处找,但找不到办法。有什么帮助吗

非常感谢

运算符是执行运行时类型检查的最简便的方法:

if (someObject instanceof String) {
    // It's a string
}
或者,在任何实例上,您都可以使用,它为您提供对象类型的
实例

Class c = someObject.getClass();
实例将有一个方法,您可以调用该方法来获取名称的字符串版本(以及许多其他方便的方法)

您可以使用
.Class
从类型名称中获取
对象,例如:

Class stringClass = String.class;
正如Peter Lawrey在评论中指出的,所有这些都假设您处理的是对象引用,而不是原语。无法对基元执行运行时类型检查,但这没关系,因为与对象引用不同(编译时声明可能是
object
),由于声明,您总是知道基元的类型。只有对象类型才会出现这种情况


如果您发现自己在Java代码中进行了大量显式类型检查,这可能表明存在结构/设计问题。在大多数情况下,您不需要在运行时检查类型。(当然也有例外。)

运算符是执行运行时类型检查的最简便的方法:

if (someObject instanceof String) {
    // It's a string
}
或者,在任何实例上,您都可以使用,它为您提供对象类型的
实例

Class c = someObject.getClass();
实例将有一个方法,您可以调用该方法来获取名称的字符串版本(以及许多其他方便的方法)

您可以使用
.Class
从类型名称中获取
对象,例如:

Class stringClass = String.class;
正如Peter Lawrey在评论中指出的,所有这些都假设您处理的是对象引用,而不是原语。无法对基元执行运行时类型检查,但这没关系,因为与对象引用不同(编译时声明可能是
object
),由于声明,您总是知道基元的类型。只有对象类型才会出现这种情况



如果您发现自己在Java代码中进行了大量显式类型检查,这可能表明存在结构/设计问题。在大多数情况下,您不需要在运行时检查类型。(当然也有例外。)

基本上,我们可以通过使用覆盖方法来实现我们的目标

   class GetType {
        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");
        }
    } 
    public static void main(String args[]) {
          double doubleVar = 1.5;
          int intVar = 7;
          float floatVar = 1f;

          GetType objType = new GetType();
          objType.printType(doubleVar);
          objType.printType(intVar);
          objType.printType(floatVar);
    }

基本上,我们可以通过使用覆盖方法来实现我们的目标

   class GetType {
        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");
        }
    } 
    public static void main(String args[]) {
          double doubleVar = 1.5;
          int intVar = 7;
          float floatVar = 1f;

          GetType objType = new GetType();
          objType.printType(doubleVar);
          objType.printType(intVar);
          objType.printType(floatVar);
    }

类cls=obj.getClass();或者您也可以用另一种方法,例如:if(obj instanceof String){…}try Class cls=obj.getClass();或者你也可以用另一种方法,例如:if(obj instanceof String){…}试试@PeterLawrey:好的,我在上面加了一点(实际上,如果你有时间的话,我不介意你用专家的眼光看这个加法)。@PeterLawrey:好的,我在上面加了一点(事实上,如果你有时间的话,我不介意你用专家的眼光去看这个加法)。