Java 8 中的类型
typeof in Java 8
如果我们想检查javascript中变量的数据类型,我们可以使用typeof
运算符。
考虑这个片段
var c = 'str' ;
console.log(typeof(c)); // string
c = 123 ;
console.log(typeof(c)); // number
c = {} ;
console.log(typeof(c)) ; // object
我想在 Java 8
中实现相同的功能。 Java 没有 typeof 运算符,但有 instanceof
运算符来检查类型。
System.out.println("str" instanceof String); // true
Integer a = 12 ;
System.out.println(a instanceof Integer);
Float f = 12.3f
System.out.println(f instanceof Float); // true
我们能做得更好吗?另外instanceof
不支持原始类型。
java 8
有什么方法吗?任何相关的方法将不胜感激。
您可以使用getClass()
方法获取您正在使用的对象的类型:
Object obj = null;
obj = new ArrayList<String>();
System.out.println(obj.getClass());
obj = "dummy";
System.out.println(obj.getClass());
obj = 4;
System.out.println(obj.getClass());
这将生成以下输出:
class java.util.ArrayList
class java.lang.String
class java.lang.Integer
如您所见,它将显示变量引用的对象的类型,这可能与变量的类型不同(在本例中为Object
)。
对于原始类型,没有可用的解决方案,因为不存在知道存储在变量中的类型的问题。基本类型变量只能保存 类型的 值。因为您必须在某个地方定义变量(或参数),所以您已经知道它的类型和它可以容纳的值。原始值没有 "base" 类型,您可以使用类似于 Object
类型的类型,它是 java.
中所有对象的基本类型
感谢@Progman getClass()
方法。
class check{
static Class typeof(Integer a)
{
return a.getClass();
}
static Class typeof(Character c)
{
return c.getClass();
}
static Class typeof(Float f)
{
return f.getClass();
}
static Class typeof(Double d)
{
return d.getClass();
}
static Class typeof(Long l)
{
return l.getClass();
}
static Class typeof(String s)
{
return s.getClass();
}
}
所以现在我们检查原始类型和非原始类型
check.typeof(12) ; // class java.lang.Integer
check.typeof(12.23f) ; // class java.lang.Float
check.typeof('c') ; // class java.lang.Character
check.typeof("str") ; // class java.lang.String
这是我在 Java(10 或更高版本)中找到的最接近您的 Java脚本示例的功能示例,其中包含 typeof
运算符和 var
(本地变量声明仅在 Java).
它处理原始数据类型并暗示首先将原始数据转换为对象,然后在相应的对象上调用 .getClass().getSimpleName()
方法。
参考文献:Use getClass().getSimpleName() to Check the Type of a Variable in Java
public class Main {
public static void main(String[] args) {
var myNum = 72;
System.out.println(((Object) myNum).getClass().getSimpleName()); // Integer
var myInput = 10.52f;
System.out.println(((Object) myInput).getClass().getSimpleName()); // Float
var yetAnotherInput = 0.345678923;
System.out.println(((Object) yetAnotherInput).getClass().getSimpleName()); // Double
var otherInput = 1_234_567_764_456_211L;
System.out.println(((Object) otherInput).getClass().getSimpleName()); // Long
var myName = "John";
System.out.println(((Object) myName).getClass().getSimpleName()); // String
var myLetter = 'j';
System.out.println(((Object) myLetter).getClass().getSimpleName()); // Character
var myAnswer = true;
System.out.println(((Object) myAnswer).getClass().getSimpleName()); // Boolean
}
}
如果我们想检查javascript中变量的数据类型,我们可以使用typeof
运算符。
考虑这个片段
var c = 'str' ;
console.log(typeof(c)); // string
c = 123 ;
console.log(typeof(c)); // number
c = {} ;
console.log(typeof(c)) ; // object
我想在 Java 8
中实现相同的功能。 Java 没有 typeof 运算符,但有 instanceof
运算符来检查类型。
System.out.println("str" instanceof String); // true
Integer a = 12 ;
System.out.println(a instanceof Integer);
Float f = 12.3f
System.out.println(f instanceof Float); // true
我们能做得更好吗?另外instanceof
不支持原始类型。
java 8
有什么方法吗?任何相关的方法将不胜感激。
您可以使用getClass()
方法获取您正在使用的对象的类型:
Object obj = null;
obj = new ArrayList<String>();
System.out.println(obj.getClass());
obj = "dummy";
System.out.println(obj.getClass());
obj = 4;
System.out.println(obj.getClass());
这将生成以下输出:
class java.util.ArrayList
class java.lang.String
class java.lang.Integer
如您所见,它将显示变量引用的对象的类型,这可能与变量的类型不同(在本例中为Object
)。
对于原始类型,没有可用的解决方案,因为不存在知道存储在变量中的类型的问题。基本类型变量只能保存 类型的 值。因为您必须在某个地方定义变量(或参数),所以您已经知道它的类型和它可以容纳的值。原始值没有 "base" 类型,您可以使用类似于 Object
类型的类型,它是 java.
感谢@Progman getClass()
方法。
class check{
static Class typeof(Integer a)
{
return a.getClass();
}
static Class typeof(Character c)
{
return c.getClass();
}
static Class typeof(Float f)
{
return f.getClass();
}
static Class typeof(Double d)
{
return d.getClass();
}
static Class typeof(Long l)
{
return l.getClass();
}
static Class typeof(String s)
{
return s.getClass();
}
}
所以现在我们检查原始类型和非原始类型
check.typeof(12) ; // class java.lang.Integer
check.typeof(12.23f) ; // class java.lang.Float
check.typeof('c') ; // class java.lang.Character
check.typeof("str") ; // class java.lang.String
这是我在 Java(10 或更高版本)中找到的最接近您的 Java脚本示例的功能示例,其中包含 typeof
运算符和 var
(本地变量声明仅在 Java).
它处理原始数据类型并暗示首先将原始数据转换为对象,然后在相应的对象上调用 .getClass().getSimpleName()
方法。
参考文献:Use getClass().getSimpleName() to Check the Type of a Variable in Java
public class Main {
public static void main(String[] args) {
var myNum = 72;
System.out.println(((Object) myNum).getClass().getSimpleName()); // Integer
var myInput = 10.52f;
System.out.println(((Object) myInput).getClass().getSimpleName()); // Float
var yetAnotherInput = 0.345678923;
System.out.println(((Object) yetAnotherInput).getClass().getSimpleName()); // Double
var otherInput = 1_234_567_764_456_211L;
System.out.println(((Object) otherInput).getClass().getSimpleName()); // Long
var myName = "John";
System.out.println(((Object) myName).getClass().getSimpleName()); // String
var myLetter = 'j';
System.out.println(((Object) myLetter).getClass().getSimpleName()); // Character
var myAnswer = true;
System.out.println(((Object) myAnswer).getClass().getSimpleName()); // Boolean
}
}