Java classes often gather identity, fields, behavior, validation, and lifecycle in one noun. Musi asks first whether the noun is just shape; if so, records or data are enough.
interface Show<T> {
String show(T value);
}let Show [T] := class {
let show (value : T) : String;
};
export instance Show[Int] {
let show (value : Int) : String := "number";
};Reading Records, Classes, and Objects from Java
On the Musi side, Musi records and data variants describe stored shape. Behavior belongs in functions or classes/instances, not inside an object by default. Read the shared example through Java eyes: keep the useful instinct, then let Musi name shape, behavior, absence, and outside work in separate places.
False friend
Do not read class as object shape. If the page is about a pet, invoice, room, or vehicle, start with fields or variants. For a Java reader, the trap is reading Musi class as a nominal object type with constructors and fields; Musi class is a behavior contract supplied by instances; records and data model object shape.
When this pays off
Use records when names like owner, age, amount, or route are the point of the value. The Java instinct still helps here: Keep the Java habit of naming APIs for future readers.