jjzjj

primitive

全部标签

java - 在java中将原始类型数组转换为对象数组

为什么我不能在java中做到这一点?Object[]o=(Object[])(newint[]{0,1,2,3.14,4});我有一个方法,它接收一个对象,然后将其表示为一个字符串,但取决于他的类型(原始、原始包装器、数组等)。当我创建单元测试时,我将一个数组作为Object传递,这很好,但是当我将该对象转换为Object[]时,我得到ClassCastException。这仅发生在原始类型数组中。有什么办法可以避免这种行为?如果没有,有人可以解释一下Java虚拟机上出现这种行为的原因是什么。非常感谢任何帮助。 最佳答案 这是一个简

java - 在java中将原始类型数组转换为对象数组

为什么我不能在java中做到这一点?Object[]o=(Object[])(newint[]{0,1,2,3.14,4});我有一个方法,它接收一个对象,然后将其表示为一个字符串,但取决于他的类型(原始、原始包装器、数组等)。当我创建单元测试时,我将一个数组作为Object传递,这很好,但是当我将该对象转换为Object[]时,我得到ClassCastException。这仅发生在原始类型数组中。有什么办法可以避免这种行为?如果没有,有人可以解释一下Java虚拟机上出现这种行为的原因是什么。非常感谢任何帮助。 最佳答案 这是一个简

java - 使用 int 作为 java.util.Dictionary 的类型参数

当我尝试这样声明字典时:privateDictionarymap;编译器给我以下错误:Syntaxerrorontoken"int",Dimensionsexpectedafterthistoken但它适用于Integer。我隐约知道Java对待int/Integer的方式不同(我来自.NET背景),但我希望有人能给我一个完整的解释为什么我不能在字典中使用原语 最佳答案 在Java中,原语不是对象,因此您不能使用它们来代替对象。然而,Java会自动将原语(又名autoboxing)装箱/拆箱到对象中,因此您可以执行以下操作:List

java - 使用 int 作为 java.util.Dictionary 的类型参数

当我尝试这样声明字典时:privateDictionarymap;编译器给我以下错误:Syntaxerrorontoken"int",Dimensionsexpectedafterthistoken但它适用于Integer。我隐约知道Java对待int/Integer的方式不同(我来自.NET背景),但我希望有人能给我一个完整的解释为什么我不能在字典中使用原语 最佳答案 在Java中,原语不是对象,因此您不能使用它们来代替对象。然而,Java会自动将原语(又名autoboxing)装箱/拆箱到对象中,因此您可以执行以下操作:List

java - Java原语是不可变的吗?

如果一个方法有一个局部变量i:inti=10;然后我分配一个新值:i=11;这会分配一个新的内存位置吗?还是直接替换原来的值?这是否意味着原语是不可变的? 最佳答案 Willthisallocateanewmemorylocation?Orjustreplacetheoriginalvalue?Java并没有真正保证变量将对应于内存位置。例如,您的方法可能会以i存储在寄存器中的方式进行优化-或者甚至可能根本不存储,如果编译器可以看到您从未实际使用它的值,或者如果它可以通过代码跟踪并直接使用适当的值。但把它放在一边。..如果我们在这里

java - Java原语是不可变的吗?

如果一个方法有一个局部变量i:inti=10;然后我分配一个新值:i=11;这会分配一个新的内存位置吗?还是直接替换原来的值?这是否意味着原语是不可变的? 最佳答案 Willthisallocateanewmemorylocation?Orjustreplacetheoriginalvalue?Java并没有真正保证变量将对应于内存位置。例如,您的方法可能会以i存储在寄存器中的方式进行优化-或者甚至可能根本不存储,如果编译器可以看到您从未实际使用它的值,或者如果它可以通过代码跟踪并直接使用适当的值。但把它放在一边。..如果我们在这里

java - 检查原始字段的类型

我正在尝试确定对象上字段的类型。我不知道传递给我的对象的类型,但我需要找到long的字段。区分盒装Long很容易,但原始long似乎更难。我可以确保传递给我的对象只有Longs,而不是原语,但我宁愿没有。所以我有的是:for(Fieldf:o.getClass().getDeclaredFields()){Classclazz=f.getType();if(clazz.equals(Long.class)){//foundone--Idon'tgethereforprimitivelongs}}似乎可行的一种hacky方法是:for(Fieldf:o.getClass().getDec

java - 检查原始字段的类型

我正在尝试确定对象上字段的类型。我不知道传递给我的对象的类型,但我需要找到long的字段。区分盒装Long很容易,但原始long似乎更难。我可以确保传递给我的对象只有Longs,而不是原语,但我宁愿没有。所以我有的是:for(Fieldf:o.getClass().getDeclaredFields()){Classclazz=f.getType();if(clazz.equals(Long.class)){//foundone--Idon'tgethereforprimitivelongs}}似乎可行的一种hacky方法是:for(Fieldf:o.getClass().getDec

java - 动态查找表示原始 Java 类型的类

我需要在Java中进行一些反射方法调用。这些调用将包括具有原始类型(int、double等)参数的方法。反射性查找方法时指定此类类型的方式有int.class、double.class等。挑战在于我正在接受来自外部源的输入,该源将动态指定类型。因此,我还需要动态地提出这些类引用。想象一个带有参数类型列表的方法名称列表的分隔文件:doSomethingintdoubledoSomethingElsejava.lang.Stringboolean如果输入类似于java.lang.String,我知道我可以对那个Class实例使用Class.forName("java.lang.String

java - 动态查找表示原始 Java 类型的类

我需要在Java中进行一些反射方法调用。这些调用将包括具有原始类型(int、double等)参数的方法。反射性查找方法时指定此类类型的方式有int.class、double.class等。挑战在于我正在接受来自外部源的输入,该源将动态指定类型。因此,我还需要动态地提出这些类引用。想象一个带有参数类型列表的方法名称列表的分隔文件:doSomethingintdoubledoSomethingElsejava.lang.Stringboolean如果输入类似于java.lang.String,我知道我可以对那个Class实例使用Class.forName("java.lang.String