Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java: Array of primitive data types does not autobox

I have a method like this:

public static <T> boolean isMemberOf(T item, T[] set) {     for (T t : set) {         if (t.equals(item)) {             return true;         }     }     return false; } 

Now I try to call this method using a char for T:

char ch = 'a'; char[] chars = new char[] { 'a', 'b', 'c' }; boolean member = isMemberOf(ch, chars); 

This doesn't work. I would expect the char and char[] to get autoboxed to Character and Character[], but that doesn't seem to happen.

Any insights?

like image 761
David Koelle Avatar asked Feb 05 '09 20:02

David Koelle


People also ask

Do arrays autobox?

There is no autoboxing for arrays, only for primitives.

Can primitive data types be serialized?

If declaring member data as primitive data types, will values be serialized if object is declared serializable? Yes, everything that is not marked transient will be serialized, including primitives.

Can arrays hold primitives in Java?

You can have arrays of any of the Java primitives or reference variables. The important point to remember is that when created, primitive arrays will have default values assigned, but object references will all be null.

Can arrays contain primitive data types?

Arrays of primitive types hold primitive types. "Every Java Programmers knows, Array is a collection of Objects, it doesn't matter whether it contains primitive data types or Strings." Wrong. An array is an object, but it doesn't necessarily contain objects.


1 Answers

There is no autoboxing for arrays, only for primitives. I believe this is your problem.

like image 106
Eddie Avatar answered Sep 19 '22 17:09

Eddie