Subscribe for automatic updates: RSS icon RSS

Login icon Sign in for full access | Help icon Help
Advanced search

Pages: [1]
  Reply  |  Print  
Author Topic: java class with method named create()  (Read 5934 times)
Jos? V.
Posts: 55

« on: March 30, 2022, 11:40:48 am »

I'm using the java interface and one class from the framework I'm trying to use has a static method called create().

So when I call this method from 4gl, fglcomp and fglrun assume I want to call the builder method.
How can I call the actual method from the class and not constructor?

What I'm doing: an example):
class JcvClass {
 public JcvClass(){}

 public static String create(){
    return "new string";


and then in 4GL:

       display JcvClass.create()
end main

This code calls JcvClass.JcvClass() and not JcvClass.create()
Rene S.
Four Js
Posts: 111

« Reply #1 on: May 17, 2022, 08:03:47 am »

this is a know limitation/issue: if fglcomp sees C.create() where C is a class name, then the compiler assumes this is a call to the constructor.
  1. #4gl
  2. LET x = C.create()
acts like
  1. //java
  2. x = new(C);

This implies: it is not possible to call a static Java method named create from 4gl.
Unfortunately: there is no workaround. There is now way to fix without breaking any existing code.

Decades after the 1sh implementation of "call java from 4gl" I am asking myself, why we have used the name create. We should have used the name new. The symbol new is a reserved word in Java, a method can not be named new. Too late.

The compiler should raise a warning if a java class implements a method named create "conflicting" withe a constructor.

The compiler could 1st) lookup for a constructor - for backward compatibility - next lookup for a method. This would still fail if both, constructor and method exist.


Jos? V.
Posts: 55

« Reply #2 on: May 17, 2022, 10:06:26 am »

Thank you for the reply/explanation Rene.
That was our fear.
We will try to make a wrapper class to call the framework in order to try and workaround the issue.
Pages: [1]
  Reply  |  Print  
Jump to:  

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines