Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Yoshihisa Takeda
2,554 views
Kotlin界のsealed classはJava界でも『sealed』なのか
Shibuya.apk#20で発表したLTのスライドです。
Software
◦
Read more
0
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 22
2
/ 22
3
/ 22
4
/ 22
5
/ 22
6
/ 22
7
/ 22
8
/ 22
9
/ 22
10
/ 22
11
/ 22
12
/ 22
13
/ 22
14
/ 22
15
/ 22
16
/ 22
17
/ 22
18
/ 22
19
/ 22
20
/ 22
21
/ 22
22
/ 22
More Related Content
PDF
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
by
Shin Ohno
PDF
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
by
NTT DATA Technology & Innovation
PDF
開発速度が速い #とは(LayerX社内資料)
by
mosa siru
PPTX
Dockerからcontainerdへの移行
by
Akihiro Suda
PDF
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
by
NTT DATA Technology & Innovation
PPTX
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
by
NTT DATA Technology & Innovation
PDF
それはYAGNIか? それとも思考停止か?
by
Yoshitaka Kawashima
PDF
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
by
Shin Ohno
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
by
NTT DATA Technology & Innovation
開発速度が速い #とは(LayerX社内資料)
by
mosa siru
Dockerからcontainerdへの移行
by
Akihiro Suda
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
by
NTT DATA Technology & Innovation
祝!PostgreSQLレプリケーション10周年!徹底紹介!!
by
NTT DATA Technology & Innovation
それはYAGNIか? それとも思考停止か?
by
Yoshitaka Kawashima
PostgreSQL初心者がパッチを提案してからコミットされるまで(第20回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
What's hot
PDF
こわくない Git
by
Kota Saito
PPTX
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
by
NTT DATA Technology & Innovation
PDF
いつやるの?Git入門
by
Masakazu Matsushita
PDF
分散学習のあれこれ~データパラレルからモデルパラレルまで~
by
Hideki Tsunashima
PPTX
テストコードの DRY と DAMP
by
Yusuke Kagata
PDF
DDD sample code explained in Java
by
増田 亨
PDF
オブジェクト指向できていますか?
by
Moriharu Ohzu
PDF
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
by
NTT DATA Technology & Innovation
PDF
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
by
Yahoo!デベロッパーネットワーク
PDF
データ基盤に関わる問い合わせ対応を仕組みで解決する
by
株式会社MonotaRO Tech Team
PPTX
大量時空間データの処理 ~ 現状の課題と今後OSSが解決すべきこと。(Open Source Conference 2021 Online/Osaka講演資料)
by
NTT DATA Technology & Innovation
PDF
Paxos
by
Preferred Networks
PDF
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
by
NTT DATA Technology & Innovation
PDF
メルカリ・ソウゾウでは どうGoを活用しているのか?
by
Takuya Ueda
PDF
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
by
Preferred Networks
PPTX
Docker Tokyo
by
cyberblack28 Ichikawa
PDF
REST API のコツ
by
pospome
PPT
Raft
by
Preferred Networks
PPT
メタプログラミングって何だろう
by
Kota Mizushima
PPTX
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
こわくない Git
by
Kota Saito
9/14にリリースされたばかりの新LTS版Java 17、ここ3年間のJavaの変化を知ろう!(Open Source Conference 2021 O...
by
NTT DATA Technology & Innovation
いつやるの?Git入門
by
Masakazu Matsushita
分散学習のあれこれ~データパラレルからモデルパラレルまで~
by
Hideki Tsunashima
テストコードの DRY と DAMP
by
Yusuke Kagata
DDD sample code explained in Java
by
増田 亨
オブジェクト指向できていますか?
by
Moriharu Ohzu
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
by
NTT DATA Technology & Innovation
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
by
Yahoo!デベロッパーネットワーク
データ基盤に関わる問い合わせ対応を仕組みで解決する
by
株式会社MonotaRO Tech Team
大量時空間データの処理 ~ 現状の課題と今後OSSが解決すべきこと。(Open Source Conference 2021 Online/Osaka講演資料)
by
NTT DATA Technology & Innovation
Paxos
by
Preferred Networks
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
by
NTT DATA Technology & Innovation
メルカリ・ソウゾウでは どうGoを活用しているのか?
by
Takuya Ueda
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
by
Preferred Networks
Docker Tokyo
by
cyberblack28 Ichikawa
REST API のコツ
by
pospome
Raft
by
Preferred Networks
メタプログラミングって何だろう
by
Kota Mizushima
フックを使ったPostgreSQLの拡張機能を作ってみよう!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
by
NTT DATA Technology & Innovation
Kotlin界のsealed classはJava界でも『sealed』なのか
1.
Kotlin界のsealed classは Java界でも『sealed』なのか
2.
● Yoshihisa Takeda ●
@bomneko_attack ○ 昨日作ったまっさらで闇を抱えていないアカウント ● 株式会社Diverse(ミクシィグループ) ● YYCというマッチングアプリの開発をしています ● 2017年4月SNS(mixi.jp)インフラからAndroidエンジニアに転生しました ○ AWS移行やってました
3.
おさらい: sealed class ●
修飾子 sealedが付いたclass ● sealedが付いたclassのサブクラスは同じファイルにしか置けない ● 継承そのものを禁止するわけではなく範囲を制限する ○ C#のsealed class とは異なる ● 用途 ○ 外部から振る舞いを変えてほしくない ○ 代数的データ型を定義したい時
4.
最初からKotlinで書き始めたならともかく… ● 世の中のアプリはKotlinを途中から入れ始めたものが多いのでは ○ JavaとKotlinの世界を行ったり来たり ●
Kotlinで書かれたコードはJava界からどんな風に見えるのか ○ 完全に理解する必要はないがときどき思い出してあげると幸せになるかも ● sealed classはJavaから見ても『sealed』なのか?
5.
Kotlinで書いて逆コンパイルすればええんやな₍₍(ง˘ω˘)ว⁾⁾
6.
● 色のセットを定義した sealed
classとそれを利用するJavaで書かれたMain ○ Generatorがランダムに色のインスタンスを返してくるので適当に printlnするやーつ ○ (instanceOfとキャストしまくりなので既にツラミ ...)
7.
₍₍(ง˘ω˘)ว⁾⁾
11.
● sealed class自体はabstract
class ● 子クラスは宣言の仕方で違いがある ○ ネストされた子クラス : static final class ○ ネストされていない子クラス : final class
12.
Java界では安全ではない説
13.
やってみましょう₍₍(ง˘ω˘)ว⁾⁾
15.
IntelliJの指示通りに直したら赤線消えたぞ!!
16.
実行!!!
17.
死
18.
● 安全機構はちゃんと入っている ○ デフォルトコンストラクタは
Private ○ Publicなコンストラクタはコンパイラが自動生成する合成メソッド ○ DefaultConstructorMarkerってやつが必要らしい https://github.com/JetBrains/kotlin/blob/master/core/runtime.jvm/src/kotlin/jvm/internal/De faultConstructorMarker.java ■ Kotlinランタイムが差し込むやつなんでしょうか。詳しい方教えてください
19.
Jarの差し替えができるなら逆コンパイルして アクセス修飾子書き換えてやればいいのさ ! KotlinのSealed Classは Sealedされてないじゃないか! https://stackoverflow.com/questions/19492214/extending-class-with-only-private-constructors/19493363#19493363
20.
せやな
21.
まとめ ● sealed classは継承の範囲を絞る ●
使い所の例 ○ 外部から振る舞いを変えてほしくない時 ○ 代数的データ型を定義したい時 ● sealed classはJavaの世界から見てもsealed ○ Kotlin強い ● でも使うのはKotlin同士のほうが圧倒的に楽 ○ when式とSmartCast強い
22.
最後に… ● DiverseではSwift(iOS)/Kotlin(Android, サーバー)を扱える エンジニアを募集中です
Download