How do I alias the scala setter method 'myvar_$eq(myval)' to something more pleasing when in java?

Posted by feydr on Stack Overflow See other posts from Stack Overflow or by feydr
Published on 2010-03-12T18:26:33Z Indexed on 2010/03/12 19:27 UTC
Read the original article Hit count: 220

Filed under:
|
|
|
|

I've been converting some code from java to scala lately trying to teach myself the language.

Suppose we have this scala class:

class Person() {
  var name:String = "joebob"
}

Now I want to access it from java so I can't use dot-notation like I would if I was in scala.

So I can get my var's contents by issuing:

person = Person.new();
System.out.println(person.name());

and set it via:

person = Person.new();
person.name_$eq("sallysue");
System.out.println(person.name());

This holds true cause our Person Class looks like this in javap:

Compiled from "Person.scala"
public class Person extends java.lang.Object implements scala.ScalaObject{
    public Person();
    public void name_$eq(java.lang.String);
    public java.lang.String name();
    public int $tag()       throws java.rmi.RemoteException;
}

Yes, I could write my own getters/setters but I hate filling classes up with that and it doesn't make a ton of sense considering I already have them -- I just want to alias the _$eq method better. (This actually gets worse when you are dealing with stuff like antlr because then you have to escape it and it ends up looking like person.name_\$eq("newname");

Note: I'd much rather have to put up with this rather than fill my classes with more setter methods.

So what would you do in this situation?

© Stack Overflow or respective owner

Related posts about scala

Related posts about java