1. *** New version of B4J is available ***
    B4J v7.8
    Dismiss Notice

B4J Question GetType on Main module

Discussion in 'B4J Questions' started by Chris Lee, Jul 2, 2019.

  1. Chris Lee

    Chris Lee Member Licensed User

    When calling GetType on modules such as the Main module the value returned is 'java.lang.class'.

    Does anyone know a way of obtaining more information about the class such as it's name?
     
  2. stevel05

    stevel05 Expert Licensed User

    Will this suffice?

    Code:
    Log(Me)
    Returns : "class b4j.example.main" on the main module
     
    Last edited: Jul 2, 2019
  3. Enrique Gonzalez R

    Enrique Gonzalez R Well-Known Member Licensed User

    but Log does not return a value, it will be only for debugging pourposes, but if Log actually calls the .toString function then i would add.

    Code:
    sub asJo as JavaObject
    return me
    end sub

    asjo.runmethod(
    "toString",null)
    i wrote it without testing.
     
  4. Erel

    Erel Administrator Staff Member Licensed User

    You probably should use classes instead of static code modules.
     
  5. stevel05

    stevel05 Expert Licensed User

    or

    Code:
    Dim S As String = Me
    Log(S)
     
  6. Chris Lee

    Chris Lee Member Licensed User

    The conversion to a string seems to be simplest approach. Thanks for this and the other replies.
     
  7. LucaMs

    LucaMs Expert Licensed User

    pensandoMini.png

    I'm lost, here.

    I suppose you want to know the name of your custom class by getting it from an instance of your class.

    Simply using the suggestions, I get useless values:
    Code:
    #Region PROPERTIES

    Public Sub getClassType As String
        
    Dim s As String = Me
        
    Return s
    End Sub
    Using the property above I get this stuff:
    Class Type: [fx=anywheresoftware.b4j.objects.JFX@1a579872, mvalue=, main=null

    I found answers on stackoverflow.com, like this one:
    Code:
    public class GenericClass<T> {

         
    private final Class<T> type;

         
    public GenericClass(Class<T> type) {
              this.type = 
    type;
         
    }

         public Class<T> getMyType() {
             return this.type;
         }
    }
    that I wouldn't know how to use in b4a; anyway it doesn't seem very different from the solution proposed by @Enrique Gonzalez R and I don't know what result it would return (I fear that it would not be different).


    P.S. Reading your first post again (and better) I think that now you write
    Dim s As String = Me
    Log(s)
    directly in the Main class module, getting:
    class b4j.example.main
    I don't know what it could be useful for but that's ok.


    P.P.S.
    Why "sometimes" I am so stupid? :D (please, do not answer :p).
    If I wanted the class name of a my custom class, I could simply write it directly in my getClassType property!
    Code:
    #Region PROPERTIES

    Public Sub getClassType As String
        
    Return 'Here my custom class name'
    End Sub
     
    Last edited: Jul 5, 2019
    Jorge M A and Cableguy like this.
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice