คำถามติดแท็ก kotlin

Kotlin เป็นภาษาการเขียนโปรแกรมแบบโอเพนซอร์ซที่ได้รับการสนับสนุนจาก JetBrains Kotlin ผสมผสานคุณสมบัติ OOP และคุณสมบัติการใช้งานและมุ่งเน้นไปที่การทำงานร่วมกันความปลอดภัยความคมชัดและการรองรับเครื่องมือ ปัจจุบันกำหนดเป้าหมายไปที่ JVM และ JavaScript และเป็นภาษาที่ได้รับการสนับสนุนอย่างเป็นทางการบน Android


4
ลองกับทรัพยากรใน Kotlin
เมื่อฉันพยายามเขียนเทียบเท่า Java tryโค้ด -with-resourcesใน Kotlin มันไม่ได้ผลสำหรับฉัน ฉันลองรูปแบบต่าง ๆ ต่อไปนี้: try (writer = OutputStreamWriter(r.getOutputStream())) { // ... } แต่ก็ไม่ได้ผล ไม่มีใครรู้ว่าสิ่งที่ควรใช้แทน? เห็นได้ชัดว่า Kotlin ไวยากรณ์ไม่ได้มีความหมายสำหรับการสร้างดังกล่าว แต่บางทีฉันอาจจะขาดอะไรบางอย่าง มันกำหนดไวยากรณ์สำหรับลองบล็อกดังนี้: try : "try" block catchBlock* finallyBlock?;

13
วิธีการนำรูปแบบตัวสร้างไปใช้ใน Kotlin
สวัสดีฉันเป็นมือใหม่ในโลก Kotlin ฉันชอบสิ่งที่ฉันเห็นและเริ่มคิดที่จะแปลงห้องสมุดของเราบางส่วนที่เราใช้ในแอปพลิเคชันของเราจาก Java เป็น Kotlin ไลบรารีเหล่านี้เต็มไปด้วย Pojos ด้วย setters, getters และคลาส Builder ตอนนี้ฉันได้ค้นหาวิธีที่ดีที่สุดในการใช้ Builders ใน Kotlin แต่ไม่ประสบความสำเร็จ อัปเดตครั้งที่ 2: คำถามคือวิธีเขียนแบบการออกแบบ Builder สำหรับ pojo แบบง่ายพร้อมพารามิเตอร์บางอย่างใน Kotlin รหัสด้านล่างคือความพยายามของฉันโดยการเขียนโค้ดจาวาแล้วใช้ eclipse-kotlin-plugin เพื่อแปลงเป็น Kotlin class Car private constructor(builder:Car.Builder) { var model:String? = null var year:Int = 0 init { this.model = builder.model this.year = …

4
เหตุใดเราจึงใช้“ วัตถุที่เป็นคู่หู” แทนชนิดของเขตข้อมูลคง Java ใน Kotlin
ความหมายที่ตั้งใจไว้ของ "วัตถุร่วม" คืออะไร? จนถึงตอนนี้ฉันได้ใช้มันเพื่อแทนที่ Java staticเมื่อฉันต้องการมัน ฉันสับสนกับ: ทำไมถึงเรียกว่า "สหาย" การสร้างคุณสมบัติสแตติกหลายอันหมายความว่าฉันต้องรวมกลุ่มเข้าด้วยกันในcompanion objectบล็อกหรือไม่ เมื่อต้องการสร้างอินสแตนซ์ซิงเกิลที่กำหนดขอบเขตไว้กับชั้นเรียนฉันมักจะเขียน : companion object { val singleton by lazy { ... } } ซึ่งดูเหมือนว่าเป็นวิธีการที่ไม่มีความหมายในการทำ วิธีที่ดีกว่าคืออะไร

7
วิธีการขยายแบบคงที่ใน Kotlin
คุณกำหนดวิธีการขยายแบบคงที่ใน Kotlin ได้อย่างไร? เป็นไปได้หรือไม่? ขณะนี้ฉันมีวิธีการขยายดังที่แสดงด้านล่าง public fun Uber.doMagic(context: Context) { // ... } ส่วนขยายข้างต้นสามารถเรียกใช้ในอินสแตนซ์ได้ uberInstance.doMagic(context) // Instance method แต่ฉันจะทำให้มันเป็นวิธีการคงที่ดังที่แสดงด้านล่างได้อย่างไร Uber.doMagic(context) // Static or class method

16
Kotlin-android: ฐานข้อมูลอ้างอิงที่ไม่ได้รับการแก้ไข
ฉันมีคลาสแฟรกเมนต์ต่อไปนี้เขียนใน Java โดยใช้ไลบรารี databinding ใหม่ import com.example.app.databinding.FragmentDataBdinding; public class DataFragment extends Fragment { @Nullable private FragmentDataBinding mBinding; @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mBinding = DataBindingUtil.inflate(inflater, R.layout.fragment_data, container, false); return mBinding.getRoot(); } } มันรวบรวมและทำงานได้ดี ฉันพยายามเขียนมันใหม่ใน Kotlin และทำสิ่งต่อไปนี้: import com.example.app.databinding.FragmentDataBdinding class ProfileFragment : Fragment() { private …

8
ทัศนวิสัย Android P การรับรู้ปุ่มตั้งค่าความสามารถในการเรียกใช้ได้จากกลุ่มไลบรารีเดียวกันเท่านั้น
ฉันกำลังพยายามใช้ Android P FloatingActionButton ใหม่ที่เป็นส่วนหนึ่งของcom.google.android.material.floatingactionbutton.FloatingActionButtonและฉันได้รับคำเตือนนี้: VisibilityAwareImageButton.setVisibility สามารถเรียกใช้ได้จากกลุ่มไลบรารีเดียวกันเท่านั้น (groupId = com.google.android.material) import com.google.android.material.floatingactionbutton.FloatingActionButton import android.view.View class MainActivity : AppCompatActivity() { lateinit var demoFab: FloatingActionButton override fun onCreate(savedInstanceState: Bundle?) { demoFab = findViewById(R.id.demoFab) demoFab.visibility = View.VISIBLE // the warning is here } } ฉันได้ลองค้นหาและผลการค้นหาเดียวที่เกี่ยวข้องกับการตอบสนองต่อการเปลี่ยนแปลงการเปิดเผย UI: ตอบสนองต่อการเปลี่ยนแปลงการเปิดเผย UI ฉันพยายามสำรวจว่าฉันสามารถดูว่ามีVISIBLEค่า int ในcom.google.android.materialแพ็คเกจนั้นและสิ่งเดียวที่ฉันพบคือcom.google.android.material.floatingactionbutton.FloatingActionButton.VISIBLEแต่คำเตือนยังคงอยู่ build.gradle ระดับบนสุด …

7
Kotlin: อินเทอร์เฟซ ... ไม่มีตัวสร้าง
ฉันกำลังแปลงรหัส Java ของฉันเป็น Kotlin และฉันไม่ค่อยเข้าใจวิธีอินสแตนซ์อินเทอร์เฟซที่กำหนดไว้ในโค้ด Kotlin ตัวอย่างเช่นฉันมีอินเทอร์เฟซ (กำหนดในโค้ด Java): public interface MyInterface { void onLocationMeasured(Location location); } จากนั้นต่อไปในรหัส Kotlin ของฉันฉันสร้างอินเทอร์เฟซนี้: val myObj = new MyInterface { Log.d("...", "...") } และใช้งานได้ดี อย่างไรก็ตามเมื่อฉันแปลง MyInterface เป็น Kotlin: interface MyInterface { fun onLocationMeasured(location: Location) } ฉันได้รับข้อความแสดงข้อผิดพลาด: Interface MyListener does not have constructorsเมื่อฉันพยายามสร้างอินสแตนซ์ - แม้ว่าฉันจะดูเหมือนว่าไม่มีอะไรเปลี่ยนแปลงนอกจากไวยากรณ์ …
140 java  kotlin 

30
IllegalArgumentException: การนำทาง xxx ไม่รู้จักกับ NavController นี้
ฉันมีปัญหากับองค์ประกอบสถาปัตยกรรมการนำทาง Android ใหม่เมื่อฉันพยายามนำทางจากส่วนหนึ่งไปยังอีกส่วนหนึ่งฉันได้รับข้อผิดพลาดแปลก ๆ นี้: java.lang.IllegalArgumentException: navigation destination XXX is unknown to this NavController การนำทางอื่น ๆ ทั้งหมดทำงานได้ดียกเว้นอันนี้โดยเฉพาะ ฉันใช้findNavController()ฟังก์ชันของ Fragment เพื่อเข้าถึงไฟล์NavController. ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม.

3
ความแตกต่างพื้นฐานระหว่างการพับและลดใน Kotlin คืออะไร? ควรใช้เมื่อใด
ฉันค่อนข้างสับสนกับทั้งสองฟังก์ชั่นนี้fold()และreduce()ใน Kotlin ใครช่วยยกตัวอย่างที่เป็นรูปธรรมที่ทำให้ทั้งสองอย่างเห็นได้ชัด
134 kotlin  reduce  fold 


11
Kotlin กับ JPA: นรกตัวสร้างเริ่มต้น
ตามที่ JPA ต้องการ@Entityคลาสควรมีคอนสตรัคเตอร์เริ่มต้น (ไม่ใช่อาร์กิวเมนต์) เพื่อสร้างอินสแตนซ์อ็อบเจ็กต์เมื่อดึงข้อมูลจากฐานข้อมูล ใน Kotlin คุณสมบัติสะดวกมากที่จะประกาศภายในตัวสร้างหลักดังตัวอย่างต่อไปนี้: class Person(val name: String, val age: Int) { /* ... */ } แต่เมื่อคอนสตรัคเตอร์ที่ไม่ใช่อาร์กิวเมนต์ถูกประกาศเป็นตัวสร้างรองจะต้องมีการส่งผ่านค่าสำหรับตัวสร้างหลักดังนั้นจึงจำเป็นต้องมีค่าที่ถูกต้องสำหรับพวกเขาเช่นที่นี่: @Entity class Person(val name: String, val age: Int) { private constructor(): this("", 0) } ในกรณีที่คุณสมบัติมีบางประเภทที่ซับซ้อนมากกว่า just StringและIntและไม่เป็นโมฆะมันดูไม่ดีเลยที่จะระบุค่าสำหรับพวกเขาโดยเฉพาะอย่างยิ่งเมื่อมีโค้ดจำนวนมากในตัวสร้างและinitบล็อกหลักและเมื่อมีการใช้พารามิเตอร์ - - เมื่อพวกเขาจะถูกกำหนดใหม่โดยการสะท้อนรหัสส่วนใหญ่จะถูกเรียกใช้งานอีกครั้ง ยิ่งไปกว่านั้นval-properties ไม่สามารถกำหนดใหม่ได้หลังจากตัวสร้างดำเนินการดังนั้นความไม่เปลี่ยนรูปจึงหายไปด้วย คำถามคือ: โค้ด Kotlin สามารถปรับให้เข้ากับ JPA ได้อย่างไรโดยไม่ต้องทำซ้ำรหัสโดยเลือกค่าเริ่มต้น "magic" …

11
การใช้บูลีน? ในนิพจน์ if
หากฉันมีค่าว่างBoolean bฉันสามารถทำการเปรียบเทียบต่อไปนี้ใน Java: Boolean b = ...; if (b != null && b) { /* Do something */ } else { /* Do something else */ } ใน Kotlin ฉันสามารถบรรลุสิ่งเดียวกันได้โดยใช้ตัว!!ดำเนินการ: val b: Boolean? = ... if (b != null && b!!) { /* Do something */ } else { /* …
130 kotlin  null 


22
ข้อผิดพลาด: ประเภทของโปรแกรมมีอยู่แล้ว: android.support.design.widget.CoordinatorLayout $ Behavior
ฉันได้รับข้อผิดพลาดต่อไปนี้ขณะสร้างโครงการ ไม่ได้ใช้ CoordinatorLayout ในโครงการนี้ เพิ่งเพิ่มเป็นการพึ่งพาใน build.gradle: ฉันใช้ Android Studio 3.2 Canary 4 LogCat AGPBI: {"ชนิด": "ข้อผิดพลาด", "ข้อความ": "ชนิดของโปรแกรมมีอยู่แล้ว: android.support.design.widget.CoordinatorLayout $ พฤติกรรม", "แหล่งที่มา": [{}], "เครื่องมือ": "D8" }: app: transformDexArchiveWithExternalLibsDexMergerForDebug FAILED FAILURE: Build ล้มเหลวด้วยข้อยกเว้น * เกิดข้อผิดพลาด: การดำเนินการล้มเหลวสำหรับงาน ': แอป: transformDexArchiveWithExternalLibsDexMergerForDebug' com.android.builder.dexing.DexArchiveMergerException: เกิดข้อผิดพลาดขณะผสานรวมคลังข้อมูล dex: /windows/Other/app/build/intermediates/transforms/dexBuilder/debug/0.jar, / windows / อื่น ๆ / app / …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.