android icon indicating copy to clipboard operation
android copied to clipboard

Improve support for Java varargs methods

Open slavchev opened this issue 9 years ago • 5 comments

Java supports varargs methods. For example, [Class.getMethod](https://developer.android.com/reference/java/lang/Class.html#getMethod%28java.lang.String, java.lang.Class<?>...%29)

Method getMethod (String name, Class...<?> parameterTypes)

This is syntax sugar for the actual method signature which is

Method getMethod (String name, Class<?>[] parameterTypes)

Currently, NativeScript for Android does not support calling such method with implicit parameter

var klass = java.lang.Object.class;

// option 1) not supported
var method = klass.getMethod("hasCode");

// option 2) supported
var method = klass.getMethod("hasCode", null);

We can provide another implementation for the current method resolution algorithm so it tries to find a method with one additional parameter (array) as a fallback and if this fail then the method resolution fails as expected.

slavchev avatar Jun 03 '16 09:06 slavchev

Is this related to #67 ?

petekanev avatar Jun 03 '16 10:06 petekanev

Yes, it is the same issue. Good catch!

slavchev avatar Jun 03 '16 10:06 slavchev

I have JAVA class which use for varargs

https://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html

How i can use that in TypeScript I am working on plugin development.

govi2010 avatar Jan 27 '18 07:01 govi2010

@govi2010 is there related JavaScript/TypeScript code with your inquiry?

I believe we went through the issue together on Slack, and figured out that 1) The wrong method was being invoked, and 2) parameters to a varargs method need to first be put in a javascript array

var data = [com.linkedin.platform.utils.Scope.R_BASICPROFILE, com.linkedin.platform.utils.Scope.R_EMAILADDRESS];
var scope = com.linkedin.platform.utils.build(data);

Ref to Slack discussion in the #android channel: https://nativescriptcommunity.slack.com/messages/C0MMFBJNR/convo/C0MMFBJNR-1517039657.000009/?

petekanev avatar Jan 28 '18 16:01 petekanev

@Pip3r4o Yes You are correct. Thank you man

govi2010 avatar Jan 29 '18 15:01 govi2010