본문 바로가기
android

[android] this와 this@

by arirang_ 2023. 2. 16.

프로젝트를 진행하던 중 의문이 생겨서 적어본다.

class SignUpActivity : AppCompatActivity() {
    private lateinit var viewBinding: ActivitySignUpBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        viewBinding = ActivitySignUpBinding.inflate(layoutInflater)
        setContentView(viewBinding.root)

        viewBinding.btnIndividual.setOnClickListener {
            startActivity(Intent(this,IndividualSignUpActivity::class.java))
        }
    }
}

여기서는 this를 사용해도 오류가 나지 않는다.

 

class SignUpActivity : AppCompatActivity() {
    private lateinit var viewBinding: ActivitySignUpBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        viewBinding = ActivitySignUpBinding.inflate(layoutInflater)
        setContentView(viewBinding.root)

        viewBinding.run {
            btnIndividual.setOnClickListener {
                startActivity(Intent(this@SignUpActivity,IndividualSignUpActivity::class.java))
            }
            btnOrganization.setOnClickListener {
                startActivity(Intent(this@SignUpActivity,OrganizationSignUpActivity::class.java))
            }
        }
       
        }
    }
}

여기서는 this를 사용하면 오류가 나고 this@SignUpActivity라고 해야 오류가 나지 않는다.

 

Qualified this

찾아보니 외부 this 범위에서 접근하려면 this@SignUpActivity처럼 사용한다. 

의미는 SignUpActivity의 this라는 뜻이다. 

 

Implicit this

멤버 함수의 this를 호출할 때, this를 생략할 수 있다. 

 

 

 

https://kotlinlang.org/docs/this-expressions.html#implicit-this