GWT uses either a CustomFieldSerializer implementation to serialize a 
concrete class or it uses bean serialization. Bean serialization requires a 
default constructor, serializable fields and final fields are only 
supported if you enable it.

A CustomFieldSerializer must be written for a concrete class so you cannot 
provide a serializer for class Record and then expect to send all kinds of 
records. You can write your own TestRecord_CustomFieldSerializer if you 
want to send a record via GWT-RPC. It is the same with any other class that 
you define in your application that need special treatment because it does 
not have a default constructor. Records just allow you to write a little 
less code.

https://www.gwtproject.org/doc/latest/DevGuideServerCommunication.html#DevGuideCustomSerialization

-- J.

tekkyru schrieb am Mittwoch, 12. März 2025 um 19:15:06 UTC+1:

> Many thanks for supporting Java 17 language features
>
> But in my setup the Java records (new feature) are supported on client 
> side but cannot be passed between server and client:
>
> public record TestRecord(String name, int age) implements IsSerializable {
> }
>
>
> interface MyService extends RemoteService {
>
> public TestRecord getTestRecord();
>
> }
>
> The GWT Code server displays an error:
> [ERROR] 'com.mycompany.TestRecord' has no instantiable subtypes
>
> Am I doing something wrong or the records cannot be de/serialized yet?
>
> I know they don't have the default constructors, but creating them in 
> javascript should not be affected, and de-serializing a record instance as 
> a call parameter can be (probably) done via reflection.
>
> Best regards
> Alex
>

-- 
You received this message because you are subscribed to the Google Groups "GWT 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/google-web-toolkit/e86251e1-49f5-4bee-8131-c5f566cc3303n%40googlegroups.com.

Reply via email to