I have searched for this, but unfortunately, I don\'t get the correct answer.
class Helper {
public static T[] toArray(List list) {
Just copy interface and class inside your project. This :
public interface LayerDataTransformer {
T transform(F from);
Collection transform(Collection from);
T[] toArray(Collection from);
}
and this :
public abstract class BaseDataLayerTransformer implements LayerDataTransformer {
@Override
public List transform(Collection from) {
List transformed = new ArrayList<>(from.size());
for (F fromObject : from) {
transformed.add(transform(fromObject));
}
return transformed;
}
@Override
public T[] toArray(Collection from) {
Class clazz = (Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[1];
T[] transformedArray = (T[]) java.lang.reflect.Array.newInstance(clazz, from.size());
int index = 0;
for (F fromObject : from) {
transformedArray[index] = transform(fromObject);
index++;
}
return transformedArray;
}
}
Usage.
Declare a subclass of BaseDataLayerTransformer
public class FileToStringTransformer extends BaseDataLayerTransformer {
@Override
public String transform(File file) {
return file.getAbsolutePath();
}
}
And use :
FileToStringTransformer transformer = new FileToStringTransformer();
List files = getFilesStub();// returns List
//profit!
String[] filePathArray = transformer.toArray(files);