2017-12-05 15 views
0

변환 할 코드는 다음과 같습니다.동반 개체 Kotlin에서 싱글 톤 클래스 개체의 참조를 유지하는 방법

public class AndroidLauncher extends AndroidApplication { 

    public static AndroidLauncher androidLauncher; 
    @Override 
    protected void onCreate (Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     androidLauncher = this; 
    } 
} 

안드로이드 스튜디오에서 생성 한 코드는 무엇인가요?

class AndroidLauncher : AndroidApplication() { 
    protected override fun onCreate(savedInstanceState: Bundle?) { 
     super.onCreate(savedInstanceState) 
     androidLauncher = this 
    } 

    companion object { 

     var androidLauncher: AndroidLauncher 
    } 
} 

이 코드는 다음과 같은 오류를 표시합니다.

속성 초기화 또는 내가 libgdx와 게임을 개발하고 있어요

추상적 인, 그래서 난 아무데도 내가 원하는에서 게임 개체를 사용하는이 방법을 사용합니다되어야합니다. 싱글 톤 클래스이므로 메모리가 누출되지 않습니다.

+0

'AndroidLauncher'는 '활동'입니다. – tynn

+2

중요하지 않습니다. 그러나 활동의 정적 변수를 유지하면 내가 계획하지 않은 메모리가 누출됩니다. –

+0

@tynn'AndroidLauncher'는'Activity'가 아닌'Application'입니다 ... – m0skit0

답변

1

필드가 나중에 초기화됨을 나타 내기 위해 lateinit을 사용하십시오.

companion object { 
     lateinit var androidLauncher: AndroidLauncher 
    }