All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jn.langx.util.reflect.ArrayAccessor Maven / Gradle / Ivy

Go to download

Java lang extensions for java6+, a supplement to , replacement of a Guava, commons-lang. Core utilities, Collection utilities, IO utilities, Cache, Configuration library ...

There is a newer version: 4.8.2
Show newest version
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);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy