1 package nl.tudelft.simulation.introspection;
2
3 /**
4 * The introspector provides introspection services, i.e. property discovery and manipulation, for any object.
5 * <p>
6 * Copyright (c) 2002-2025 Delft University of Technology, Jaffalaan 5, 2628 BX Delft, the Netherlands. All rights reserved. See
7 * for project information <a href="https://simulation.tudelft.nl/dsol/manual/" target="_blank">DSOL Manual</a>. The DSOL
8 * project is distributed under a three-clause BSD-style license, which can be found at
9 * <a href="https://simulation.tudelft.nl/dsol/docs/latest/license.html" target="_blank">DSOL License</a>.
10 * </p>
11 * @author <a href="https://www.linkedin.com/in/peterhmjacobs">Peter Jacobs </a>
12 * @author <a href="https://github.com/averbraeck">Alexander Verbraeck</a>
13 * @author Niels Lang.
14 * @since 1.5
15 */
16 public interface Introspector
17 {
18 /**
19 * @param introspected the introspected object
20 * @return Retrieves properties of the introspected object. The properties' values can themselves be introspectable. An
21 * empty array is returned if no introspected object has been set.
22 */
23 Property[] getProperties(Object introspected);
24
25 /**
26 * Retrieves the names of the properties of the introspected object.
27 * @param introspected The introspected object.
28 * @return An unordered array of the introspected object's property names.
29 */
30 String[] getPropertyNames(Object introspected);
31
32 /**
33 * Retrieves the {see Property}with a given name from an introspected object.
34 * @param introspected The introspected object.
35 * @param property The name of the property to be retrieved
36 * @return A {see Property}instance for the given object and property name.
37 */
38 Property getProperty(Object introspected, String property);
39 }