dab06c0942
^KT-61900
53 lines
1.7 KiB
Kotlin
Vendored
53 lines
1.7 KiB
Kotlin
Vendored
// class: JavaClass
|
|
// FILE: main.kt
|
|
|
|
// FILE: SuperInterface.java
|
|
public interface SuperInterface {
|
|
public int getActualRandomNumber();
|
|
|
|
// This static method will not be included in JavaClass's static member scope, because static interface methods are not propagated to
|
|
// their implementing class's namespaces (i.e., `JavaClass.getRandomNumber()` is an error in Kotlin and Java).
|
|
public static int getRandomNumber() {
|
|
return 3; // Decided by a fair dice roll.
|
|
}
|
|
}
|
|
|
|
// FILE: SuperClass.java
|
|
public abstract class SuperClass implements SuperInterface {
|
|
// NestedSuperClass will not be included in JavaClass's static member scope, because Kotlin does not propagate static nested classes
|
|
// defined in super-classes to sub-classes, unlike Java. So `JavaClass.SuperClass` is valid in Java, but an error in Kotlin.
|
|
public static class NestedSuperClass { }
|
|
|
|
public class InnerSuperClass { }
|
|
|
|
@Override
|
|
public int getActualRandomNumber() {
|
|
return getRandomNumber();
|
|
}
|
|
|
|
// Both static callables will be included in JavaClass's static member scope, because Kotlin propagates static methods from
|
|
// super-classes to sub-classes, just like Java. So `JavaClass.superBar()` will be a valid call in Kotlin and Java.
|
|
public static int superFoo = 5;
|
|
|
|
public static String superBar() {
|
|
return "superBar";
|
|
}
|
|
}
|
|
|
|
// FILE: JavaClass.java
|
|
public class JavaClass extends SuperClass {
|
|
public static class NestedClass { }
|
|
|
|
public class InnerClass { }
|
|
|
|
public static int foo = 1;
|
|
|
|
public static String bar() {
|
|
return "bar";
|
|
}
|
|
|
|
public void hello() {
|
|
System.out.println("hello");
|
|
}
|
|
}
|