アンドロイドスタジオ-コトリンとジャワ車(1)
3493 ワード
Javaで作成したCameraActivity部分をCottlinに書き直し、2種類のコードを分析して学習します.
まず目に入ったのは継承部分
Javaはextendsとimplementsで、継承を区別できます.
親には宣言/定義があり、子はメソッド/変数を使用できます.
親オブジェクトは宣言のみで、定義(内容)は子オブジェクトで上書き(再定義)する必要があります.
extendsとインタフェースが混在しています.extendedですが、いくつかは抽象的な方法で実現されています.
上述したように、javaは2つの継承方法で明確に区別され、使用されているが、cottlinでは、後にリストすることによって明確な区別を行わないだけである.
ジャワ
コトリン
比較コードにはもう少し違いがあります.
クラスのpublicにはマークがなく、コトリンではpublicが基本とされ、省略できる.省略すると公衆だと思われます.
変数宣言の相違
valとして指定された不変型変数は、初期割当て値の場合、後で値を変更することはできません.値を変更すると、コンパイルエラーが発生します.
つまり、この値は初期化のみ可能で、変更はできません.
Javaではfinalと見なすことができます.
valは一度だけ初期化でき、値は変更できませんが、コンパイラがコードコンテキストをチェックするときにval変数が一度だけ初期化されている場合は、開発者は状況に応じてvalを複数の値に初期化(割り当て)できます.
valは初期化後は値を変更できません.
ただし、変数の参照が指すオブジェクトの内部値は変更できます.
varとして指定された可変タイプ変数は、初期化後に値を変更できます.
ただし、他のタイプの値は入力できません.
Stringタイプに初期化した後は、Intタイプに値を入力できません.
この変数を後でIntタイプとして再定義すると、「タイプ不一致」エラーが発生します.
定義したタイプを変更するにはjavaなどの変換が必要です.
1つのタイプを宣言するときに、後ろに疑問符を付けます.
ジャワ
疑問符は必ずしも貼る必要はありません.疑問符の意味はnullableです.
2つの感嘆符は上の疑問符とは違います
null値は絶対に入力できないことを示します.
まず目に入ったのは継承部分
Javaはextendsとimplementsで、継承を区別できます.
extends
親には宣言/定義があり、子はメソッド/変数を使用できます.
インプリメンテーション
親オブジェクトは宣言のみで、定義(内容)は子オブジェクトで上書き(再定義)する必要があります.
abstract
extendsとインタフェースが混在しています.extendedですが、いくつかは抽象的な方法で実現されています.
上述したように、javaは2つの継承方法で明確に区別され、使用されているが、cottlinでは、後にリストすることによって明確な区別を行わないだけである.
ジャワ
コトリン
比較コードにはもう少し違いがあります.
クラスのpublicにはマークがなく、コトリンではpublicが基本とされ、省略できる.省略すると公衆だと思われます.
変数宣言の相違
val/var
val
valとして指定された不変型変数は、初期割当て値の場合、後で値を変更することはできません.値を変更すると、コンパイルエラーが発生します.
つまり、この値は初期化のみ可能で、変更はできません.
Javaではfinalと見なすことができます.
valは一度だけ初期化でき、値は変更できませんが、コンパイラがコードコンテキストをチェックするときにval変数が一度だけ初期化されている場合は、開発者は状況に応じてvalを複数の値に初期化(割り当て)できます.
valは初期化後は値を変更できません.
ただし、変数の参照が指すオブジェクトの内部値は変更できます.
fun main(args: Array<String>){
// 1. val : value의 약어이며 변경 불가능(immutable)한 변수, 초기화만 가능
val name = "Kotlin"
//1-1. 위에서 이미 값이 할당 되었기 때문에 아래 코드처럼 값 할당 불가
name = "Java"
//2. 타입 지정 가능, 다만 1번처럼 컴파일러에서 타입이 추론 가능한 경우 생략 가능
val name2: String = "Swift"
//2-1. 초기화시 값을 할당하지 않을시엔 반드시 타입을 지정해야함
val name2: String
name2 = "Swift"
//3. 코드 문맥에 따라 val 변수가 1번만 초기화 되는것이 맞다면 여러 값을 초기화(할당) 가능
val name3: String
if (isSuccess()){
name3 = "Anroid"
}else{
name3 = "iOS"
}
println("name3 : $name3")
//4. 변수의 참조가 가리키는 객체의 내부 값은 변경이 가능
val nameArray = arrayListOf("Kotlin")
nameArray.add("Java")
println("nameArray : $nameArray")
}
var
varとして指定された可変タイプ変数は、初期化後に値を変更できます.
ただし、他のタイプの値は入力できません.
Stringタイプに初期化した後は、Intタイプに値を入力できません.
この変数を後でIntタイプとして再定義すると、「タイプ不一致」エラーが発生します.
定義したタイプを変更するにはjavaなどの変換が必要です.
fun main(args: Array<String>){
//1. 초기화 후 값 변경 가능
var name1 = "kotlin"
name1 = "java"
println("name1 : $name1") //출력 : java
//2. 초기화 시 타입을 지정 했다면 다른 타입의 값을 넣는 것은 불가능
var name2 = "kotlin"
name2 = 77 //Type mismatch 에러 발생
}
?
1つのタイプを宣言するときに、後ろに疑問符を付けます.
ジャワ
private String mCameraId;
private CameraDevice cameraDevice;
private CameraCaptureSession cameraCaptureSessions;
private CaptureRequest captureRequest;
private CaptureRequest.Builder captureRequestBuilder;
private Size imageDimension;
コトリン private var mCameraId: String? = null
private var cameraDevice: CameraDevice? = null
private var cameraCaptureSessions: CameraCaptureSession? = null
private var captureRequestBuilder: CaptureRequest.Builder? = null
private var imageDimension: Size? = null
cottlinでは、デフォルトではパラメータはnullではありません.nullにするには、上記のタイプに従って操作しますか?貼ればいいです.疑問符は必ずしも貼る必要はありません.疑問符の意味はnullableです.
!!
2つの感嘆符は上の疑問符とは違います
null値は絶対に入力できないことを示します.
Reference
この問題について(アンドロイドスタジオ-コトリンとジャワ車(1)), 我々は、より多くの情報をここで見つけました https://velog.io/@jsw4215/코틀린으로-작성된-액티비티-분석하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol