com.jn.langx.util.reflect.ArrayAccessor Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of langx-java Show documentation
Show all versions of langx-java Show documentation
Java lang extensions for java6+, a supplement to , replacement of a Guava, commons-lang.
Core utilities, Collection utilities, IO utilities, Cache, Configuration library ...
package com.jn.langx.util.reflect;
import com.jn.langx.annotation.NonNull;
import com.jn.langx.util.BasedStringAccessor;
import com.jn.langx.util.Preconditions;
import com.jn.langx.util.collection.Arrs;
import java.lang.reflect.Array;
/**
* An array accessor
*
* @param an array
* @author jinuo.fang
*/
public class ArrayAccessor extends BasedStringAccessor {
public ArrayAccessor() {
}
public ArrayAccessor(E target) {
setTarget(target);
}
@Override
public void setTarget(@NonNull E target) {
Preconditions.checkNotNull(target);
Preconditions.checkTrue(Arrs.isArray(target));
super.setTarget(target);
}
@Override
public boolean has(Integer index) {
int length = Array.getLength(getTarget());
return index >=0 && index < length;
}
@Override
public Object get(Integer index) {
return Array.get(getTarget(), index);
}
@Override
public String getString(Integer index, String defaultValue) {
Object o = get(index);
return o == null ? defaultValue : o.toString();
}
@Override
public void set(Integer index, Object value) {
Array.set(getTarget(), index, value);
}
@Override
public void remove(Integer index) {
set(index, null);
}
}