One of the classes I am adapting extends an abstract class which extends a View. But this thread is also valid for other classes in the same project (not necessarily involving views but also with non-empty constructors)
As said, this class has a couple of non-empty constructors. Also, it has some private members.
With only BA annotations, I can't Dim a var of that class since, as it doesn't have any empty constructor, throws an error.
So I opened about 30 tabs in my explorer with forum threads regarding library wrapping/developing. I have seen different coding styles and solutions optimal for different cases, and have learned a lot from it
 in my explorer with forum threads regarding library wrapping/developing. I have seen different coding styles and solutions optimal for different cases, and have learned a lot from it
At the end I did something which I find "optimal" for my case but not sure if it is recommended
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
or even, declaring a couple of helper methods in the same class which do the same work as the inner constructor class methods.
	
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
I think it is a good solution since all the classes work, each one of them making use of the others in B4A and Java, with no need of wrapping/unwrapping.
The other approach would be encapsulating the view and the other fields in an outer class. So we could have direct Initialize methods. But I can see no other real advantages.
My question is: am I missing something which makes this solution not valid or not optimal?
			
			As said, this class has a couple of non-empty constructors. Also, it has some private members.
With only BA annotations, I can't Dim a var of that class since, as it doesn't have any empty constructor, throws an error.
So I opened about 30 tabs
At the end I did something which I find "optimal" for my case but not sure if it is recommended
- Declare an empty constructor for the class --> So, the object can already be dimmed in B4A
- Initialization: I have declared an inner static constructor/builder class with a couple of methods (equivalent to the original constructors) that return a new instance of my class. So, in BA, I do:
			
				B4X:
			
		
		
		Dim myObj as OCVJavaCameraView
Dim myConstructor as OCVJavaCameraViewConstructor      'a static inner class used for building purposes
myObj = myConstructor.createNewInstance(...)      ' call one of the constructor methods
'The constructor approach allows to instantiate new objects "on the fly"
' e.g.
callSomeSub( myConstructor.createNewInstance(...), myOtherParams.... )
			
				B4X:
			
		
		
		myObj=myObj.createNewInstance(...)     'internally makes use of the constructor
'The only difference is that we must use syntax above instead of
myObj.createNewInstance(...)     'initialize methodI think it is a good solution since all the classes work, each one of them making use of the others in B4A and Java, with no need of wrapping/unwrapping.
The other approach would be encapsulating the view and the other fields in an outer class. So we could have direct Initialize methods. But I can see no other real advantages.
My question is: am I missing something which makes this solution not valid or not optimal?
			
				Last edited: 
			
		
	
								
								
									
	
								
							
							 
				 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		