Skip to content

Commit 05bd3c1

Browse files
committed
Nicer printing for optional parameters that are arrays
1 parent 4f37377 commit 05bd3c1

1 file changed

Lines changed: 30 additions & 2 deletions

File tree

src/main/java/org/scijava/optional/AbstractOptions.java

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.scijava.optional;
22

3+
import java.util.Arrays;
34
import java.util.LinkedHashMap;
45
import java.util.Map;
56
import java.util.function.BiConsumer;
@@ -56,7 +57,7 @@ public String toString()
5657
{
5758
sb.append( option.getKey() );
5859
sb.append( " = " );
59-
sb.append( option.getValue() );
60+
sb.append( valueToString( option.getValue() ) );
6061
if ( --numLeft > 0 )
6162
sb.append( ", " );
6263
}
@@ -116,9 +117,36 @@ public void accept( final String key, final Object value )
116117
sb.append( ", " );
117118
sb.append( key );
118119
sb.append( " = " );
119-
sb.append( value );
120+
sb.append( valueToString( value ) );
120121
if ( !theOptions.containsKey( key ) )
121122
sb.append( " [default]" );
122123
}
123124
}
125+
126+
private static String valueToString( final Object value )
127+
{
128+
if ( value != null && value.getClass().isArray() )
129+
{
130+
if ( value instanceof long[] )
131+
return Arrays.toString( ( long[] ) value );
132+
else if ( value instanceof int[] )
133+
return Arrays.toString( ( int[] ) value );
134+
else if ( value instanceof short[] )
135+
return Arrays.toString( ( short[] ) value );
136+
else if ( value instanceof char[] )
137+
return Arrays.toString( ( char[] ) value );
138+
else if ( value instanceof byte[] )
139+
return Arrays.toString( ( byte[] ) value );
140+
else if ( value instanceof boolean[] )
141+
return Arrays.toString( ( boolean[] ) value );
142+
else if ( value instanceof double[] )
143+
return Arrays.toString( ( double[] ) value );
144+
else if ( value instanceof float[] )
145+
return Arrays.toString( ( float[] ) value );
146+
else
147+
return Arrays.deepToString( ( Object[] ) value );
148+
}
149+
else
150+
return String.valueOf( value );
151+
}
124152
}

0 commit comments

Comments
 (0)