Skip to content

cannot overload a java method with optional arguments #1953

Closed
@scabug

Description

@scabug

using 2.7.4-final, i cannot implement an abstract java method with optional arguments. the compiler says it's all fine and compiles without errors, but the program doesn't run.

ABaseJavaClass.java---------------------

package com.razie.learnscala;

public abstract class ABaseJavaClass {

public abstract void takesOptionalArgs (String...args);
public abstract void takesMoreOptionalArgs (String...args);
}

AScalaExtension.scala--------------------

class AScalaExtension extends ABaseJavaClass {
override def takesOptionalArgs (x:String*) = {
java.lang.System.out.printf ("Java printf: %s %s %s", x:_*)
}
}

object LearnScala extends Application {
val cc : ABaseJavaClass = (new AScalaExtension)
cc.takesOptionalArgs ("itsi", "bitsi", "spider")
}

      - runtime output:

Exception in thread "main" java.lang.AbstractMethodError: com.razie.learnscala.ABaseJavaClass.takesOptionalArgs([Ljava/lang/String;)V
at com.razie.learnscala.LearnScala$$.(LearnScala.scala:7)
at com.razie.learnscala.LearnScala$$.(LearnScala.scala)
at com.razie.learnscala.LearnScala.main(LearnScala.scala)

expected output:------------
Java printf: itsi bitsi spider

---------------------additional info

the method signatures in the .class files are different. the scala version takes a (Lscala/Seq;) while the java version takes ([Ljava/lang/String;)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions