1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
// Sample Kotlin file for testing Kotlin support in knot indexer
package com.example
import kotlin.random.Random
import androidx.appcompat.app.AppCompatActivity
/**
* Service class for handling user data operations
*/
@Service
class UserService {
private val userRepository = UserRepository()
fun getUser(id: Int): User? {
return userRepository.findById(id)
}
fun saveUser(user: User): Boolean {
return userRepository.save(user)
}
}
// Interface declaration
interface Repository<T> {
fun findById(id: Int): T?
fun save(item: T): Boolean
}
// Implementation of interface
@Repository
class UserRepository : Repository<User> {
private val users = mutableListOf<User>()
override fun findById(id: Int): User? {
return users.find { it.id == id }
}
override fun save(item: User): Boolean {
users.add(item)
return true
}
}
// Data class
data class User(
val id: Int,
val name: String,
val email: String
)
// Object declaration (singleton)
object DatabaseManager {
fun connect(): Boolean {
println("Connecting to database...")
return true
}
fun disconnect() {
println("Disconnecting from database...")
}
}
// Companion object
class ConfigManager {
companion object {
const val DEFAULT_TIMEOUT = 5000
val instance = ConfigManager()
fun configure() {
println("Configuring with timeout: $DEFAULT_TIMEOUT")
}
}
fun loadData() {
println("Loading configuration data...")
val result = DatabaseManager.connect() // Calling object method
val userService = UserService() // Instantiation
val user = userService.getUser(1) // Method call
}
}
// Top-level function
fun greetUser(user: User) {
println("Hello, ${user.name}!")
val randomValue = Random.nextInt(100) // External library usage
println("Random value: $randomValue")
}
// Extension function
fun String.isValidEmail(): Boolean {
return this.contains("@") && this.length > 5
}
// Usage of extension function
fun validateEmail(email: String) {
if (email.isValidEmail()) {
println("Valid email: $email")
} else {
println("Invalid email: $email")
}
}
// Main function
fun main() {
val user = User(1, "John Doe", "john@example.com")
greetUser(user)
val isValid = user.email.isValidEmail() // Using extension function
println("Email is valid: $isValid")
ConfigManager.configure() // Using companion object
DatabaseManager.connect() // Using singleton object
}