# Custom Null-Safety annotation is invalid in kotlin

**URL:** <https://discuss.kotlinlang.org/t/custom-null-safety-annotation-is-invalid-in-kotlin/19082>\
**Category:** Support\
**Created:** [September 8, 2020, 12:53pm UTC](https://discuss.kotlinlang.org/t/custom-null-safety-annotation-is-invalid-in-kotlin/19082 "2020-09-08T12:53:28Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![fredsuvn](https://avatars.discourse-cdn.com/v4/letter/f/a88e4f/32.png) [@fredsuvn](https://discuss.kotlinlang.org/u/fredsuvn)\
**Post date:** [September 8, 2020, 12:53pm UTC](https://discuss.kotlinlang.org/t/custom-null-safety-annotation-is-invalid-in-kotlin/19082/1 "2020-09-08T12:53:28Z")

</div>

Stack Overflow link: [https://stackoverflow.com/questions/63789139/custom-null-safety-annotation-is-invalid-in-kotlin](https://stackoverflow.com/questions/63789139/custom-null-safety-annotation-is-invalid-in-kotlin)

0

Infomation about custom Null-Safety annotation is from Kotlin official:

[https://kotlinlang.org/docs/reference/java-interop.html](https://kotlinlang.org/docs/reference/java-interop.html)

My java codes:

```auto
@TypeQualifierNickname
@Nonnull(when = When.ALWAYS)
@Retention(RetentionPolicy.RUNTIME)
public @interface NN {
}

@NN
public static <T> T notNull(@Nullable T nullable, String message) throws NullPointerException {
    return Objects.requireNonNull(nullable, message);
}

```

Error calling:

```auto
fun max(comparator: Comparator<in T>): T {
    val maxOrNull: T? = ...

    // IDEA error:
    // Type mismatch.
    // Required: T
    // Found: T?
    return Require.notNull(maxOrNull, "Collection is empty.")
}

```

But if I replace `@NN` to `@org.jetbrains.annotations.NotNull` , no error:

```auto
@org.jetbrains.annotations.NotNull
public static <T> T notNull(@Nullable T nullable, String message) throws NullPointerException {
    return Objects.requireNonNull(nullable, message);
}

```
