Объект для отображения в Java 8JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Объект для отображения в Java 8

Сообщение Anonymous »

Мне нужно кратко преобразовать Object в Map, где ключи — это нестатические объявленные имена полей (с любым модификатором доступа), а значения — это значения, которые хранятся в соответствующих полях
Если вы думаете, что я изобретаю велосипед, то я именно это и делаю. У нас нет Hibernate или любого другого решения ORM
Как мне это сделать, это важно:
  • Без Джексона (у нас его нет).
  • На Java 8.
  • С опциональным использованием Apache (у нас есть Commons, Collections, Poi , я думаю, я мог бы добавить дополнительную библиотеку Apache, но я не уверен, лучше этого избегать)
В коллекциях есть BeanMap, который к сожалению, устарел. Должен ли я использовать beanutils? Из javadoc org.apache.commons.collections.BeanMap:

Устарел
Идентичный класс теперь доступен в commons-beanutils (полная версия jar). Эта версия должна быть удалена из коллекций версии 4.0.

Я искал похожие вопросы, но не нашел
Я хочу отметить, что я знаю, как это сделать с помощью отражения, но я не хочу писать больше кода, чем мне нужно (и если я это сделаю, он будет относительно многословным). это так). Думаю, мне это, скорее всего, не понадобится
// make it pass

import org.junit.jupiter.api.Test;

import java.util.Map;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;

public class ToMapTest {

@Test
public void toMap_mapsObjectToValueMap() {
String testString = "test string";
int testInteger = 42;
MyClass myClass = new MyClass(testString, testInteger);
Map myClassAsMap = toMap(myClass);
assertNotNull(myClassAsMap);
assertEquals(2, myClassAsMap.size());
assertEquals(testString, myClassAsMap.get("string"));
assertEquals(testInteger, myClassAsMap.get("integer"));
}

private Map toMap(Object object) {
// replace with actual implementation
return null;
}

private static class MyClass {
public static final String SOME_CONSTANT = "const";
public final String string;
public int integer;

private MyClass(String string, int integer) {
this.string = string;
this.integer = integer;
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/790 ... -in-java-8
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»