Talk:Boxing (computer programming)
int i = 9; int j = 13; int k = i + j;
This is done all in a primitive type. Shouldn't the first line, for example, be "Integer i = 9"? -- Taku 01:24, September 1, 2005 (UTC)
This article doesn't say much about what an object type is. It's trying to explain autoboxing, but not doing a very good job. I'd rather read the Sun article. Can anyone do a better job? --Uncle Ed 21:42, 7 November 2006 (UTC)
Isn't it all about 'object types' living garbage collectably on the heap, and primitive types, structs living on the stack? (at least in c# and java). Boxing is creating a new object on heap out of a stack object so it can be manipulated with a reference - it is unsafe to get a reference to an object living on stack, because it could die too early and program could crash. exe 03:32, 13 May 2007 (UTC)
I think that the part about unboxing mostly speaks about what code constructs different versions of the java compiler/language accepts, and not about the language neutral concept of boxing/unboxing. I think that part should be removed, or at least some of it. (Sorry, no wikipedia account. LarsR) 10:10, 8 Aug 2007 (CET)
Made it a little more generic, and precised that since .Net, not all value types are primitive types.Medinoc (talk) 11:10, 8 October 2008 (UTC)
Haskell unboxing
Unboxing redirects here, but this is about how objects work in Java. It doesn't seem to be a suitable place to put something about unboxed types in Haskell, although there is similarity in the underlying concepts. In Haskell everything by default is 'boxed', and a boxed thing could be either the thing itself or some unevaluated expression that could evaluate to something of the correct type (because Haskell is lazy). Furby100 (talk) 21:15, 12 January 2008 (UTC)
Found something wrong:
Another example:
int i = 4;
int j = 5;
Integer k = new Integer(i + j); // always OK
Integer l = i + j; // would have been an error, but okay now - equivalent to previous line
C# does not support automatic unboxing. A boxed object must be explicitly unboxed with a typecasting operator:
int i = 42;
object o = i; //box
int j = (int)o; //unbox
Console.Writeline(j); //outputs 42
It is assumed that the following will compile on Java, but it won't. C# does support automatic unboxing of primitives, but not objects, just like Java.
int i = 42;
Object o = i; //box
int j = o; //unbox
System.out.println(j); //outputs "42"
Will not compile because it can't unbox objects of type Object.