2016-02-14 13 views
5

kodu C# przykład:java równoważne C# ExpandoObject

dynamic MyDynamic = new System.Dynamic.ExpandoObject(); 
MyDynamic.A = "A"; 
MyDynamic.B = "B"; 
MyDynamic.C = "C"; 
MyDynamic.Number = 12; 
MyDynamic.MyMethod = new Func<int>(() => 
{ 
    return 55; 
}); 
Console.WriteLine(MyDynamic.MyMethod()); 

Java?

Jakieś pomysły, dlaczego java nie ma wsparcia dla tego scenariusza?

+0

Ponieważ to nie jest język skryptowy? Najwyraźniej C# jest. Nie słyszałem o tej funkcji. –

+0

Jestem trochę zdezorientowany, czy pytasz, dlaczego Java nie ma dokładnie takiej samej składni, czy masz bardziej szczegółowy scenariusz, który mógłby rozwiązać ten kod, a podejrzewasz, że nie można go naprawić w Javie? –

+0

@JoachimIsaksson proszę spojrzeć w mojej odpowiedzi na znak, dzięki :) – User1234

Odpowiedz

2

Java jest znacznie bardziej rygorystyczna w tym przypadku. Krótka odpowiedź brzmi: nie, Java nie ma Expando. Składnia po prostu tego nie obsługuje.

Jednak w Groovy jest Expando, który jest dynamicznym językiem na szczycie java.

BTW, jeśli używasz Expando do testów, istnieje wiele różnych rozwiązań związanych z technologią Mock: EasyMock, Mockito, JMock, aby wymienić tylko kilka.

Mam nadzieję, że to pomoże

+0

@ Mark dziękuję, nie do testu. Chcę serializować dwie instancje w jeden ciąg jsonów (używając gson), zrobiłem to samo z użyciem Expando w języku C# i było to proste i szybkie (i być może brudne), w Javie wydaje się, że muszę mieć klasę compsite do represnt te przykłady, klasa, której nie użyję. – User1234

+0

@ user310291 Nie, mam na myśli, nie pozwala na takie dynamiczne zachowanie. Dynamiczne wywoływanie może być kosztowne i powodować powolne zachowanie w środowisku wykonawczym (po prostu zbyt wiele instrukcji, które ma wykonywać JVM). Istnieją alternatywy, takie jak groovy lub Scala. W każdym razie celem nie jest tutaj święta wojna. –

+0

@ User1234. Ok, w tym przypadku lepiej użyj Jsona prosto. Być może uznasz to za pomocne: http://www.mkyong.com/java/json-simple-example-read-and-write-json/ –

Powiązane problemy