Add good getFirstNonNull method

This commit is contained in:
2023-02-22 11:22:14 -06:00
parent 1bdce12b8d
commit 4cf8e37e7e
2 changed files with 46 additions and 1 deletions

View File

@ -728,4 +728,29 @@ public class ValueUtils
.with(ChronoField.NANO_OF_DAY, 0); .with(ChronoField.NANO_OF_DAY, 0);
return (startOfMonth.toInstant(zone.getRules().getOffset(computerTime))); return (startOfMonth.toInstant(zone.getRules().getOffset(computerTime)));
} }
/*******************************************************************************
** Return the first argument that isn't null.
** If all were null, return null.
*******************************************************************************/
public static <T> T getFirstNonNull(T... ts)
{
if(ts == null || ts.length == 0)
{
return (null);
}
for(T t : ts)
{
if(t != null)
{
return (t);
}
}
return (null);
}
} }

View File

@ -272,4 +272,24 @@ class ValueUtilsTest extends BaseTest
assertThrows(QValueException.class, () -> ValueUtils.getValueAsType(Serializable.class, 1)); assertThrows(QValueException.class, () -> ValueUtils.getValueAsType(Serializable.class, 1));
} }
/*******************************************************************************
**
*******************************************************************************/
@Test
void testGetFirstNonNull()
{
assertEquals(0, ValueUtils.getFirstNonNull(0));
assertEquals(1, ValueUtils.getFirstNonNull(1, 2));
assertEquals(2, ValueUtils.getFirstNonNull(null, 2));
assertEquals(3, ValueUtils.getFirstNonNull(null, null, 3));
assertNull(ValueUtils.getFirstNonNull());
assertNull(ValueUtils.getFirstNonNull(new Object[] { }));
assertNull(ValueUtils.getFirstNonNull(null));
assertNull(ValueUtils.getFirstNonNull(null, null));
}
} }