在python中,可以创建函数字典(foo,bar
)并通过访问字典元素来调用它们:
d = {'a':foo, 'b':bar}
d[val]()
在此示例中,如果var='a'
调用了函数foo
,并且var='b'
调用了函数bar
(其他选项会导致错误)。
我可以在android / Java中做类似的事吗?
答案 0 :(得分:0)
这在Python中很容易,因为方法是First-Class Citizens。而在Java中,它们不是。
在Java 8中 - 您可以创建Map
的{{1}}(在本例中为HashMap
)
Runnable
然后运行它
Map<Character, Runnable> methods= new HashMap<>();
methods.put('help', () -> System.out.println("Help"));
你也可以用反射做,但代码看起来非常像这样。
答案 1 :(得分:0)
UPDATE TMP_OP_USPORTCALLS_RPT
SET CARGO_QTY = (
SELECT A.CARGO_QUANTITY FROM (
SELECT CASE WHEN (SUM(NVL(QUANTITY,0))) > 0 THEN ROUND(SUM(NVL(QUANTITY,0))) END AS CARGO_QUANTITY
FROM OP_POSITION_CARGO
WHERE COMPANY_ID = 2
AND SHIP_ID = '380'
AND COMMODITY_ID = 816
AND KEY_POSITION = (
SELECT KEY_POSITION
FROM OP_POSITION_DETAILS
WHERE COMPANY_ID = 2 AND SHIP_ID = '380' AND VOYAGE_NO = 152
AND KEY_POSITION = 800892
AND EVENT_ID = (
SELECT EVENT_ID
FROM MA_EVENT
WHERE COMPANY_ID = 2 AND UPPER(EVENT_NAME) LIKE 'LOAD%'
)
)
GROUP BY KEY_POSITION, COMMODITY_ID,UNIT_CODE
) A)
WHERE COMPANY_ID = 2 AND SHIP_ID = '380' AND VOYAGE_NO = 152
AND KEY_POSITION = 800892 AND COMMODITY_ID = 816 AND QUERY_ID = '1476272548543'
答案 2 :(得分:-1)
在Java Dictionaries中,我们将其称为HashTable / HashMap。
请看一下这个课程。 https://developer.android.com/reference/java/util/Hashtable.html
HashTable示例: https://www.tutorialspoint.com/java/java_hashtable_class.htm
https://developer.android.com/reference/java/util/HashMap.html
希望这会对你有所帮助:)。