fix: Accept class parameter for destination instead of class name

This commit is contained in:
Krrish Ghimire
2019-12-04 11:09:28 +05:45
parent 7a7d25635e
commit 39ef4515e4
3 changed files with 9 additions and 5 deletions

6
.gitignore vendored
View File

@@ -1,3 +1,7 @@
.gradle/**
.idea/**
build/**
build/classes/**
build/generated/**
build/reports/**
build/test-results/**
build/tmp/**

View File

@@ -3,10 +3,10 @@ package np.com.krrish;
import java.lang.reflect.*;
public class Mapper {
public static Object map(Object source, String destination) {
public static Object map(Object source, Class destination) {
Object object = new Object();
try {
Class<?> aClass = Class.forName(destination);
Class<?> aClass = Class.forName(destination.getName());
object = aClass.getConstructor().newInstance();
Field[] sourceFields = source.getClass().getDeclaredFields();
for (Field sourceField : sourceFields) {

View File

@@ -9,7 +9,7 @@ class MapperTest {
@Test
void testEmptyFieldsMap() {
Source source = new Source();
Object destination = Mapper.map(source, "np.com.krrish.Destination");
Object destination = Mapper.map(source, Destination.class);
assertEquals(Destination.class, destination.getClass());
}
@@ -19,7 +19,7 @@ class MapperTest {
source.setFirst("first");
source.setSecond("second");
Destination destination = (Destination) Mapper.map(source, "np.com.krrish.Destination");
Destination destination = (Destination) Mapper.map(source, Destination.class);
assertEquals("first", destination.getFirst());
}
}