I have a AWTrack class in my app as follows:
import android.database.sqlite.SQLiteDatabase;
import androidx.annotation.NonNull;
import java.io.Serializable;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import kaaes.spotify.webapi.android.models.Track;
public class AWTrack implements Serializable {
    private int id;
    private String idSpotify;
    private String name;
    private String album;
    private String author;
    private String spotifyPreviewUrl;
    private int musicType;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getIdSpotify() {
        return idSpotify;
    }
    public void setIdSpotify(String idSpotify) {
        this.idSpotify = idSpotify;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAlbum() {
        return album;
    }
    public void setAlbum(String album) {
        this.album = album;
    }
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
    private int getMusicType() {
        return musicType;
    }
    public void setMusicType(int musicType) {
        this.musicType = musicType;
    }
    public String getSpotifyPreviewUrl() {
        return spotifyPreviewUrl;
    }
    public void setSpotifyPreviewUrl(String spotifyPreviewUrl) {
        this.spotifyPreviewUrl = spotifyPreviewUrl;
    }
    public AWTrack(){
    }
    public AWTrack(int id)
    {
        this.id = id;
    }
    public static AWTrack map(Track track, int trackId)
    {
        /*AWTrack awTrack = new AWTrack() {{
            setId(trackId);
            setSpotifyPreviewUrl(track.preview_url);
            setName(track.name);
            setAuthor(track.artists.get(0).name);
        }};*/
        AWTrack awTrack = new AWTrack();
        awTrack.setId(trackId);
        awTrack.setSpotifyPreviewUrl(track.preview_url);
        awTrack.setName(track.name);
        awTrack.setAuthor(track.artists.get(0).name);
        return awTrack;
    }
}
In this class I've created a static map method intended to cast kaaes.spotify.webapi.android.models.Track object into AWTrack (only the needed properties) and I'm trying to use inline object initialization in the following way:
public static AWTrack map(Track track, int trackId)
{
    AWTrack awTrack = new AWTrack() {{
        setId(trackId);
        setSpotifyPreviewUrl(track.preview_url);
        setName(track.name);
        setAuthor(track.artists.get(0).name);
    }};
}
But I'm facing a weird problem, and it's that the resulting AWTrack object has an embedded (and unexpected) Track object in it.
If, on the contrary, I do object initialization in the traditional way -like the next-:
public static AWTrack map(Track track, int trackId)
{
    AWTrack awTrack = new AWTrack();
    awTrack.setId(trackId);
    awTrack.setSpotifyPreviewUrl(track.preview_url);
    awTrack.setName(track.name);
    awTrack.setAuthor(track.artists.get(0).name);
    return awTrack;
}
it works correctly, but the fact is I'm expecting to be able to do object initialization like the one shown in the first method, definitely prefer the first syntax.
EDIT: To make it clear, my main problem is after creating the object I serialise it with Gson like this:
ArrayList<AWTrack> list = .....
Gson gson = new Gson();
String json = gson.toJson(list);
And if I apply serialisation to the object instantiated in the classic way I get a string like the next:
[{"author":"Philip Wesley","id":70,"musicType":0,"name":"Loves Crush","spotifyPreviewUrl":"http://xxx"}]
But with the inline instantiation what I get after serialisation with Gson is:
"[null]"
Any help will be much appreciated.
