我在查看oracle權利服務器API的同時遇到了一個預計上述參數類型的below語句。這是什麼意思列表<Class <?擴展DataType >>?
FunctionEntry functionEntry = ...;
functionEntry.setParameterTypes(List<Class<? extends DataType>>);
我很難理解它要求什麼。我只理解「擴展數據類型」。我需要傳入setParameterTypes方法的什麼類型的參數?
我在查看oracle權利服務器API的同時遇到了一個預計上述參數類型的below語句。這是什麼意思列表<Class <?擴展DataType >>?
FunctionEntry functionEntry = ...;
functionEntry.setParameterTypes(List<Class<? extends DataType>>);
我很難理解它要求什麼。我只理解「擴展數據類型」。我需要傳入setParameterTypes方法的什麼類型的參數?
A List<Class<?>>
是Class
個物體的列表,例如,
Arrays.asList(String.class, Boolean.class, Pattern.class)`
甲List<Class<? extends T>>
是隻能包含T的Class
對象和它的子類例如一個列表List<Class<? extends CharSequence>>
可以是
Arrays.asList(String.class, StringBuffer.class, StringBuilder.class, CharSequence.class)`
的語句定義的類型每個所述FunctionEntry
需要的參數。雖然,鍵入它的方式在語法上不正確。的setParameterTypes
定義是
setParameterTypes(java.util.List<java.lang.Class<? extends DataType>> parameters)
所以它期待的對應參數類型的函數要定義,與添加的需求,該類型必須是DataType
子類的列表。例如,類別OpssBoolean
,OpssInteger
和OpssDouble
是Oracle API中DataType的子類。所以,如果你想要這個API,它接受一個OpssBoolean
作爲第一個參數,一個OpssInteger
作爲第二個參數,以及OpssDouble
作爲第三個參數中定義的函數,你定義它是這樣的:
List<java.lang.Class<? extends DataType>> parameterTypes = Arrays.asList(
OpssBoolean.class, OpssInteger.class, OpssDouble.class
);
functionEntry.setParameterTypes(parameterTypes);
它返回一個輸入參數列表。
可以說,該函數使用可變數量的輸入參數,它將返回最小所需輸入的TYPES。 例如,邏輯函數AND和OR可以採用一定數量的輸入參數,但需要最少2個OpssBoolean類型參數。因此,此方法將爲AND或OR函數返回{OpssBoolean.class,OpssBoolean.class}。
你試圖回答什麼問題? – Seelenvirtuose
「我很難理解它要求什麼。」我試圖解釋,這個functionEntry.setParameterTypes(列表
真的:您試圖解釋一個_setter_(名稱以「set」開頭的方法)返回一個輸入參數列表?這是完全錯誤的。抱歉。 – Seelenvirtuose
其要價內List
該對象應該擴展DataType
類
它要求你傳遞一個List<MyDataType>
其中
public class MyDataType extends DataType
{
/* your data type stuff */
}
看到這裏的詳細信息,數據類型:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
它要求有關特定Class
對象的列表。在這種情況下,代表從DataType
類延伸的類別的Class
對象的列表。當你從這個類像伸出:
public class MySpecialDataType extends DataType
{
}
public class AnotherDataTypeToUse extends DataType
{
}
可以使用表達式MySpecialDataType.class
和AnotherDataTypeToUse.class
(所謂的「類文本」),以獲得可分配給Class<? extends DataType>
變量的對象。
Class<MySpecialDataType> clazzOne = MySpecialDataType.class;
Class<AnotherDataTypeToUse> clazzTwo = AnotherDataTypeToUse.class;
Class<? extends DataType> baseClazz = clazzOne; // works
baseClazz = clazzTwo; // also works
List<Class<? extends DataType>> clazzes = new ArrayList<Class<? extends DataType>>();
clazzes.add(clazzOne);
clazzes.add(clazzTwo);
functionEntry.setParameterTypes(clazzes);
你可能想看看Arrays.asList()
爲setParameterTypes()
的說法。
由於您的解釋,我今天學習了Class對象。謝謝! – DaeYoung
[java.lang.Class中](https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html) –