如何将数组作为参数传递给函数,以及与存储在数组中的数据类型相同的对象?
How can I pass an array as an argument to a function, as well as an object of the same data type of those stored in the array?
我想创建一个以数组和对象作为参数的函数:
public static int myFunction(Object[] array, Object obj) {
//Stuff
}
但是,我想确保obj
的数据类型与array
中存储的数据类型相同。如果仅使用 obj instanceof array[0]
,我可以抛出异常,但我很好奇是否有办法在函数的参数中指定它。我怀疑可能有一种方法可以用泛型来做到这一点,但我对它们的经验还不够确定。非常感谢任何帮助!
只要测试 class 是否相等
public class Program {
public static void main(String[] args) {
Object[] arr = new Object[3];
arr[0] = "akflj";
char test1 = 'a';
String test2 = "azdf";
System.out.println(test(arr, test1));
System.out.println(test(arr, test2));
}
public static boolean test(Object[] arr, Object item) {
if(item.getClass().equals(arr[0].getClass())) {
return true;
}
return false;
}
}
仅当项目已在数组中时才能正常运行
如果要编译时检查,可以使用泛型:
public static <T> int myFunction(T[] array, T obj) {
//Stuff
}
您可以在 Java 文档中阅读更多关于泛型方法的内容:https://docs.oracle.com/javase/tutorial/extra/generics/methods.html
我想创建一个以数组和对象作为参数的函数:
public static int myFunction(Object[] array, Object obj) {
//Stuff
}
但是,我想确保obj
的数据类型与array
中存储的数据类型相同。如果仅使用 obj instanceof array[0]
,我可以抛出异常,但我很好奇是否有办法在函数的参数中指定它。我怀疑可能有一种方法可以用泛型来做到这一点,但我对它们的经验还不够确定。非常感谢任何帮助!
只要测试 class 是否相等
public class Program {
public static void main(String[] args) {
Object[] arr = new Object[3];
arr[0] = "akflj";
char test1 = 'a';
String test2 = "azdf";
System.out.println(test(arr, test1));
System.out.println(test(arr, test2));
}
public static boolean test(Object[] arr, Object item) {
if(item.getClass().equals(arr[0].getClass())) {
return true;
}
return false;
}
}
仅当项目已在数组中时才能正常运行
如果要编译时检查,可以使用泛型:
public static <T> int myFunction(T[] array, T obj) {
//Stuff
}
您可以在 Java 文档中阅读更多关于泛型方法的内容:https://docs.oracle.com/javase/tutorial/extra/generics/methods.html