Java Mapping for Local Interfaces

On this page:

Mapped Java Class

A Slice local interface is mapped to a Java interface with the same name, for example:

Slice
[["java:package:com.zeroc"]]
 
module Ice
{
    local interface Communicator
    {
        ...
    }
}

is mapped to the Java interface Communicator:

Java
package com.zeroc.Ice;
 
public interface Communicator
{
    ...
}

The delegate metadata allows you to map a local interface with a single operation to a functional Java interface. For example:

Slice
[["java:package:com.zeroc"]]
module Ice
{
    ["delegate"] local interface ValueFactory
    {
        Value create(string type);
    }
}

is mapped to:

Java
package com.zeroc.Ice;
 
@FunctionalInterface
public interface ValueFactory
{
    com.zeroc.Ice.Value create(String type);
}

LocalObject in Java

All Slice local interfaces implicitly derive from LocalObject, which is mapped to java.lang.Object in Java.

Mapping for Local Interface Inheritance in Java

Inheritance of local Slice interfaces is mapped to interface inheritance in Java. For example:

Slice
module M
{
    local interface A {}
    local interface B extends A {}
    local interface C extends A {}
    local interface D extends B, C {} 
} 

is mapped to:

Java
package M;
 
public interface A {}
public interface B extends A {}
public interface C extends A {}
public interface D extends B, C {}