Arrays: Using Value-Type and Reference-Type Arrays

Arrays: Using Value-Type and Reference-Type Arrays

With javOnet, you can use any value-type or reference-type arrays. Arrays can be retrieved from field or property values, returned as method invocation results, or passed as arguments or set to fields and properties. All array operations can be performed both on instance and static elements.

Using arrays is very simple. Value-typed arrays are translated into regular arrays of corresponding Java types. Reference-typed arrays are represented as array of NObject objects.

Starting with version 1.4hf34 you can also retrieve a mixed arrays of value and reference types. In such case you will received on Java side an Object[] which will consist of NObject items and Java value types like (float, double, int, etc..).

Example

//Sample .NET class
    public class Item
    {
        public string ItemName { get; set; }
    }
    public class Sample
    {
        public string[] GetItems()
        {
            return new string[] { "item1", "item2", "item3" };
        }
        public Item[] GetRefItems()
        {
            return new []{ new Item("Item1"),new Item("Item2"), new Item("Item3")};
        }
        public void DisplayArray(string[] items)
        {
            Console.Out.WriteLine("Displaying value-typed array");
            foreach (var item in items)
                Console.Out.WriteLine(item);
        }
        public void DisplayArray(Item[] items)
        {
            Console.Out.WriteLine("Displaying ref-typed array");
            foreach (var item in items)
                Console.Out.WriteLine(item.ItemName);
        }
    }
//Usage in Java
	//Retrieving array of strings
	NObject sampleObj = Javonet.New("Sample");
	String[] items = sampleObj.invoke("GetItems");
	for (int i=0; i<items.length;i++)
	{
		System.out.println(items[i]);
	}

	//Passing array of strings
	String[] stringArray = new String[] {"Item1","Item2","Item3"};
	sampleObj.invoke("DisplayArray",new Object[] {stringArray});

	//Retrieving array of .NET objects
	NObject[] refArray = sampleObj.invoke("GetRefItems");
	for (int i=0; i<refArray.length;i++)
	{
		System.out.println(refArray[i].get("ItemName"));
	}

	//Passing array of .NET objects
	sampleObj.invoke("DisplayArray",new Object[] {refArray});

See Live Example!