์ต๊ทผ JAVA์ ๋์ฒด์ธ์ด๋ก ์ฃผ๋ชฉ๋ฐ๊ณ ์๋ ์ธ์ด์ธ Kotlin ์ ๊ด์ฌ์ด ์ ๋ ธ๋ค. ์๋๋ก์ด๋ ์คํ๋์ค๋ฅผ ๊ฐ๋ฐํ Jet Brains์์ 2011๋ ์ ๊ณต๊ฐํ ์ธ์ด์ธ๋ฐ ๊ธฐ์กด์ JAVA ์ธ์ด์ 100% ํธํ์ด ๋๋๋ก ๋ง๋ค์ด ์ก๊ณ , ํจ์ฌ ๊ฐ๊ฒฐํ ์ฝ๋์ ๋์ ์์ฐ์ฑ ๋๋ถ์ ๊ตฌ๊ธ์์๋ ์๋๋ก์ด๋ ์ ์ ์ธ์ด๋ก ์ ์ ํ๊ฒ ๋์๋ค๊ณ ํ๋ค.
์ผ๋ถ ๋ฌธ๋ฒ๋ง ์ ์ธํ๊ณ ๊ธฐ๋ณธ ์๋๊ตฌ์กฐ๋ JAVA์ ๋์ผํ๊ธฐ ๋๋ฌธ์ JAVA ์ธ์ด์์ Kotlin์ผ๋ก ๊ฑด๋๊ฐ๊ธฐ๋ ๋งค์ฐ ์ฝ๋ค๊ณ ํ๋ค. ๊ทธ๋ ๋ค๊ณ Kotlin์ ๋จผ์ ๋ฐฐ์์ ์๋๋ก์ด๋ ๊ฐ๋ฐ์ ์์ํ๋ ๊ฒ ๋ณด๋ค JAVA๋ฅผ ๋ฐฐ์ด ํ ์๋๋ก์ด๋ ๊ฐ๋ฐ์ ์งํํ๋ค๊ฐ ์ด๋์ ๋ ์ญ๋์ด ๊ฐ์ถฐ์ก๋ค๋ฉด, ๊ทธ๋ Kotlin์ผ๋ก ๋์ด์ค๋๊ฒ ๋ ์ ์ตํ๋ค. ์ฆ๋ง๋ฃจ
๋ฐ๋ผ์ ๋๋ ์ธ์ ๊ฐ๋ ๋ฐฐ์ฐ๊ฒ ๋ Kotlin์ ์ง๊ธ๋ถํฐ ๋ฐฐ์ฐ๊ธฐ ์์ํ๊ณ , ์ด๋ฒ ํฌ์คํ ์์๋ ์๋นํ ๋์กํ๊ฒ ๊ตฌํํ๋ JAVA๋ฒ์ ์ ๋ชจ์ต๊ณผ ์ฌํํ๊ณ ๊น๋ํ๊ฒ ๊ตฌํํ๋ Kotlin๋ฒ์ ์ ๋ชจ์ต์ ๋น๊ตํ๋ฉฐ ๊ธ์ ์์ฑํ ๊ฒ์ด๋ค.
์์
์ด๋ฒ์ ํ ์คํธ์ฉ์ผ๋ก ์ฌ์ฉํ ํ๋ฉด์ ๋ชจ์ต์ด๋ค.
๊ฐ๋จํ๊ฒ ๋ฒํผ์ ๋๋ฅด๋ฉด ๋์์ ํฉ์ ๊ตฌํด์ ์๋ ํ ์คํธ๋ทฐ๋ก ๊ฒฐ๊ณผ๋ฅผ ํ์ํ๋ ์ฑ์ด๋ค.
์ด์ ๋์์ธ ํ์ผ์ ๋ณด๋๋ก ํ๋ฉด
main_activity.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="20dp"
>
<EditText
android:id="@+id/et_first"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:hint="์ซ์์
๋ ฅ"
/>
<EditText
android:id="@+id/et_second"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/et_first"
android:layout_marginLeft="30dp"
android:hint="์ซ์์
๋ ฅ"
/>
<Button
android:id="@+id/btn_sum"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginRight="20dp"
android:text="Sum"
/>
<TextView
android:id="@+id/tv_result"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30dp"
android:text="๋ ์์ ํฉ : ๊ณ์ฐ ์ "
android:layout_centerInParent="true"/>
</RelativeLayout>
RelativeLayout ๋ง๋ง์ธ
๊ทธ๋ฆฌ๊ณ ํ๋ก๊ทธ๋๋ฐ ๋ถ๋ถ์ ๋ณด๋๋ก ํ์
์ฐ์ ๊ธฐ์กด์ ์๋ฐ ๋ฒ์ ์ ์ฝ๋ฉ๋ฐฉ์์ด๋ค.
JavaActivity.class
public class JavaActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText etFirst = (EditText)findViewById(R.id.et_first);
final EditText etSecond = (EditText)findViewById(R.id.et_second);
final Button btnSum = (Button)findViewById(R.id.btn_sum);
final TextView tvResult = (TextView)findViewById(R.id.tv_result);
btnSum.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
int first = Integer.parseInt(etFirst.getText().toString());
int second = Integer.parseInt(etSecond.getText().toString());
tvResult.setText("๋ ์์ ํฉ : "+calculate(first,second));
}
});
}
private int calculate(int first, int second){
return first + second;
}
๊ทธ๋์ JAVA๋ก ๊ฐ๋ฐ์ ํด๋ดค๋ค๋ฉด ๋น์ฐํ๊ฒ ์ฌ๊ฒจ์ง๋ ์ฝ๋ฉ์ ์์ด๋ค.
findViewById๋ก ๋ ์ด์์์์ ๋ทฐ๋ฅผ ์ฐพ์ ์ฌํ์ ๋ ๋๊ณ , ๊ทธ๊ฑธ ๋ทฐ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ด์์ฃผ๊ณ
๋ฒํผ ์ด๋ฒคํธ ๊ตฌํํ๊ธฐ์ํด ์จํด๋ฆญ๋ฆฌ์ค๋ ์ค์ ์ ๋ฌด๋ช ๋ฉ์๋๋ก ์จํด๋ฆญ๋ฆฌ์คํฐ ๊ตฌํํด์ฃผ๊ณ ....ETC
์ด๋ฒ์๋
์ฝํ๋ฆฐ์ผ๋ก ๋ฐ๋ก ๋์ด๊ฐ ๋ณด๊ฒ ๋ค.
KotlinActivity.class
class KotlinActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val etFirst = findViewById<EditText>(R.id.et_first)
val etSecond = findViewById<EditText>(R.id.et_second)
btn_sum.setOnClickListener {
var first = Integer.parseInt(etFirst.text.toString())
var second = Integer.parseInt(etSecond.text.toString())
tv_result.text(calculate(first,second))
}
}
fun calculate(first: Int, second: Int): Int {
return first + second
}
}
์ค ์๋ง ๋ด๋ 10์ค ์ค์ 3์ค์ ์ค์ด๋ ๊ฑฐ๊ฐ์ง ์์๊ฐ?
๊ทผ๋ฐ ๋ ๋๋ผ์ด๊ฑด ์ด๊ฒ ๋์ด ์๋๋ค. ์ฌ๊ธฐ์ btn_sum.setOnClickListener๋ก ์ด๋ฒคํธ๋ฅผ ๊ตฌํํด ์คฌ๋๋ฐ
Kotline์ ์ ์ฉํ ๊ธฐ๋ฅ์ค ํ๋๊ฐ ๋ฐ๋ก Extension์ ์ด์ฉํ๋ ๊ฒ์ด๋ค.
๊ทธ๋์ findViewById๋ฅผ ์ฌ์ฉํด์ ๋ ์ด์์์์ ๋ทฐ๋ฅผ ์ฐพ์์ ๊ฐ์ฒด์ ๋ด์์คฌ๋๋ฐ Extension์ ์ฌ์ฉํ๋ค๋ฉด
๊ธฐ๋ณธ์ ์ผ๋ก (๋ทฐ์ ID).(๋ทฐ์ ์์ฑ) = ""; ์ด๋ฐ์์ผ๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
(๋จ ์ค์ํ๊ฑด ์ต์คํ ์ ์ผ๋ก ์ฌ์ฉํ๋ฉด ์์ฑ๋ณ๊ฒฝ๋ ๋ฉ์๋ ํ์์ด์๋ ์ดํธ๋ฆฌ๋ทฐํธ ํ์์ผ๋ก ๋ฐ๊ฟ์ค์ผํ๋ค.)
id_textview.setText("test") X
id_textview.text = "test" O
๊ทธ๋ฆฌ๊ณ ์ด๋ฒคํธ ๊ตฌํํ๋ ๊ฒ๋ ๋ฌด๋ช ๋ฉ์๋๋ฅผ ์ธ ํ์๊ฐ ์์ด์ก๋ค!
๋๋คํจ์๋ ๋งค์ฐ ๊ฐ๋จํ๊ฒ ๊ตฌํ์ด ๊ฐ๋ฅํ๋ค ๋ฐ๋ผ์ calculate๋ผ๋ ์ผ๋ฐ ํจ์๋ฅผ ๋๋คํจ์๋ฅผ ์ ์ฉํ๊ณ , ๋ค๋ฅธ ๋ทฐ ๊ฐ์ฒด๋ค๋ Extension์ ์ฌ์ฉํ๋๋ก ํ๋ฉด ์ต์ข ์ ์ผ๋ก ๋์ฑ ์ฌํํ ์ฝ๋๊ฐ ์์ฑ๋๋ค
KotlinActivity.class ๋์ฑ ์ฌํ
class KotlinActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btn_sum.setOnClickListener {
var first = Integer.parseInt(et_first.text.toString())
var second = Integer.parseInt(et_second.text.toString())
tv_result.text= "๋ ์์ ํฉ : "+calculate(first,second).toString()
}
}
val calculate = { first: Int, second: Int -> first + second } //๋๋ค
}
์ต์ข ์ ์ผ๋ก JAVA์ ๋น๊ตํ๋ฉด 5์ค ์ ๋๋ ์ค์ด๋ ๋ชจ์ต์ด๋ค.
Before...
public class JavaActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText etFirst = (EditText)findViewById(R.id.et_first);
final EditText etSecond = (EditText)findViewById(R.id.et_second);
final Button btnSum = (Button)findViewById(R.id.btn_sum);
final TextView tvResult = (TextView)findViewById(R.id.tv_result);
btnSum.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
int first = Integer.parseInt(etFirst.getText().toString());
int second = Integer.parseInt(etSecond.getText().toString());
tvResult.setText("๋ ์์ ํฉ : "+calculate(first,second));
}
});
}
private int calculate(int first, int second){
return first + second;
}
After...
class KotlinActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btn_sum.setOnClickListener {
var first = Integer.parseInt(et_first.text.toString())
var second = Integer.parseInt(et_second.text.toString())
tv_result.text= "๋ ์์ ํฉ : "+calculate(first,second).toString()
}
}
val calculate = { first: Int, second: Int -> first + second } //๋๋ค
}
์ด๊ฒ์ด ๋ฐ๋ก Kotlin์ ์ฌ์ฉํ๋ ์ด์ ๋ค.