Another way to instantiate a class does not implement the parent interfaces


At somewhere, that I can not remember, I read about an alternative way to instatiate a object:

Generally, we instantiate (and assign) this way:

User userObj = new User();

An alternative way could be:

User userObj = new User()

I was using this alternative, and it works.

1) Anyone knows what is it? Where is Java documentation link that metion about it?

I stop to use this because I was having problems with interfaces that ClassName implements, but the alternative way don't implements. Oo

public class User implements Serializable
    private int id;
    private String name;
    //public Getters and Setters

2) When I try to serialize and use it (passing from one activity to another, using: putExtra(String, Serializable) it will throw NotSerializableException. Why?

Edit 1: An anonnymous class also implements the parent 'implementations', like Serializable from ClassName?

You are using anonymous class with initialization block. So it's just an equivalent to the:

SubClass extends ClassName{


new SubClass();

There is nothing wrong with this construction - but please notice that you are not creating object of ClassName class, but object of SubClass class.

As I said you are using anonymous class (class without name). This is bad - cause while serialization / deserialization JVM should exactly know what is the class of serialization data, so basically - don't use anonymous classes if you want to serialize them.