From Java to Ceylon
CLASSES
Constructor Call
Java
final File file = new File("file.txt");
Ceylon
value file = File {filename = "file.txt";};
Class
Java
public final class User {
}
Ceylon
class User(){}
Open Class
Java
public class User {
}
Ceylon
shared class User(){}
Final Attributes
Java
final class User {
     private final String name;

     public User(String name) {
         this.name = name;
     }

     public String getName() {
         return name;
     }
 }
Ceylon
class User(String name){}
Primary Constructor
Java
final class User {
     private String name;

     public User(String name) {
         this.name = name;
     }

     public String getName() {
         return name;
     }

     public void setName(String name) {
         this.name = name;
     }
 }
Ceylon
class User(String name){}
Optional Arguments in Constructors
Java
final class User {
     private String name;
     private String lastName;

     public User(String name) {
         this(name, "");
     }

     public User(String name, String lastName) {
         this.name = name;
         this.lastName = lastName;
     }

     // And Getters & Setters
 }
Ceylon
class User(String name, String lastName = ""){}
Properties
Java
public class Document {
    private String id = "00x";

     public String getId() {
         return id;
     }

     public void setId(String id) {
         if(id != null && !id.isEmpty()) {
             this.id = id;
         }
     }
 }
Ceylon
class Document(id){
	variable shared String id;
}
FUNCTIONS
Abstract Class
Java
public abstract class Document{
   public abstract int calculateSize();
}

public class Photo extends Document{
    @Override
    public int calculateSize() {

    }
}
Ceylon
abstract class Document() {
    shared formal Integer calculateSize();
}

class Photo() extends Document() {
    shared actual Integer calculateSize(){
        return 0;
    }
}
Singleton
Java
public class Document {
   private static final Document INSTANCE = new Document();

   public static Document getInstance(){
       return INSTANCE;
   }

 }
 
Ceylon
object document {

}
Extensions
Java
public class ByteArrayUtils {
      public static String toHexString(byte[] data) {

      }
  }

  final byte[] dummyData = new byte[10];
  final String hexValue = ByteArrayUtils.toHexString(dummyData);
Ceylon
object utils {
    shared String toHexString(Array<Byte> data){
        
    }
}

value dummyData = Array<Byte>(10);
utils.toHexString(dummyData);
Inner Class
Java
public class Documment {

    class InnerClass {

    }

}
Ceylon
class Document() {
    shared class InnerClass(){}
}
Nested Class
Java
public class Documment {

    public static class InnerClass {

    }

}
Ceylon
class Document() {

    class InnerClass(){}

}
Interface
Java
public interface Printable {
    void print();
}

public class Document implements Printable {
    @Override
    public void print() {

    }
}
Ceylon
interface Printable{
    shared formal void print();
    shared default void method(){
    	print();
    }
}

class Document() satisfies Printable{
    shared actual void print(){
    	print("Implemented method");
    }
}