質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
最適化

最適化とはメソッドやデザインの最適な処理方法を選択することです。パフォーマンスの向上を目指す為に行われます。プログラミングにおける最適化は、アルゴリズムのスピードアップや、要求されるリソースを減らすことなどを指します。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

解決済

1回答

860閲覧

Kotlin-setterのみprivateにする最適な記述方法について

yotu_xxx

総合スコア1

最適化

最適化とはメソッドやデザインの最適な処理方法を選択することです。パフォーマンスの向上を目指す為に行われます。プログラミングにおける最適化は、アルゴリズムのスピードアップや、要求されるリソースを減らすことなどを指します。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

2クリップ

投稿2021/11/14 20:22

実現したいこと

以下のような要件を満たすプロパティを作成したいとします。

  • ゲッターはpublic, セッターはprivate
  • インスタンスを生成する際に引数として初期化を必要とする

これらをもとに以下のコードを製作しました。

kotlin

1class Time(private val _minute: Int) { 2 var minute = _minute 3 private set 4 ...

これでもよいのですが、以下のような問題があります。

  • プロパティが多くなるにつれ、プライマリコンストラクタの記述が助長になってしまう
  • 一つ一つprivate setを設定する必要がある

そのため、可能であればこれに代わる簡潔なコードの書き方をご教授いただきたいです。
もし不可能であれば、その旨を伝えていただきたいです。

補足情報

Kotlinのバージョン:1.5.31

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

kotlin

1class Time(private var _minute: Int) { 2 val minute 3 get() = _minute 4 ...

これじゃ一緒か…

わたしだったら、できるかぎりvarを排除する方向で考える。dataクラスにして、値を変更するときはcopy()メソッドで新しいインスタンスを生成する。

kotlin

1data class Time(val minute: Int, val xxx:String, ...) 2val hoge = Time(123, "xxx", ...) 3val newHoge = hoge.copy(minute = 456)

投稿2021/11/15 02:51

編集2021/11/15 02:52
shiketa

総合スコア3971

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yotu_xxx

2021/11/15 07:51 編集

回答ありがとうございます なるほど、copy()を使うのは初知りでした これで実装しなおしてみようと思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問