英文:
Overloading same method to print different data type arraylist
问题
我的任务是重载相同的方法,以便能够使用相同的方法名称,将两个数组列表的内容打印到屏幕上。
以下是我尝试过的代码。但由于这两个方法具有相同的名称,所以无法工作?
import java.util.ArrayList;
public class Tutotrial_2_1 {
public static void main(String[] args){
//创建整数类型的数组列表
ArrayList<Integer> listOfAges = new ArrayList<Integer>();
//向数组列表添加项目
listOfAges.add(25);
listOfAges.add(36);
listOfAges.add(45);
listOfAges.add(67);
listOfAges.add(87);
listOfAges.add(32);
listOfAges.add(33);
listOfAges.add(45);
//创建双精度类型的数组列表
ArrayList<Double> listOfMarks = new ArrayList<Double>();
//向数组列表添加项目
listOfMarks.add(25.4);
listOfMarks.add(36.5);
listOfMarks.add(4.45);
listOfMarks.add(55.67);
listOfMarks.add(55.7);
listOfMarks.add(32.0);
listOfMarks.add(33.0);
listOfMarks.add(45.0);
//调用整数数组的display函数
displayArray(listOfAges);
displayArray(listOfMarks);
}
//显示listOfAges数组的函数
public static void displayArray(ArrayList<Integer> list){
for(Integer indexes : list){
System.out.println(indexes);
}
}
public static void displayArray(ArrayList<Double> list){
for(Double indexes : list){
System.out.println(indexes);
}
}
}
英文:
My task is to overload the same method, to be able to use the same method name, to print to screen, the contents of the both array list contents.
Below is my code I have tried. But it's not working because both methods have same name?
import java.util.ArrayList;
public class Tutotrial_2_1 {
public static void main(String[] args){
//Creating integer type array list
ArrayList<Integer>listOfAges = new ArrayList<Integer>();
//Adding items to array list
listOfAges.add(25);
listOfAges.add(36);
listOfAges.add(45);
listOfAges.add(67);
listOfAges.add(87);
listOfAges.add(32);
listOfAges.add(33);
listOfAges.add(45);
//Creating double type array list
ArrayList<Double>listOfMarks = new ArrayList<Double>();
//Adding items to array list
listOfMarks.add(25.4);
listOfMarks.add(36.5);
listOfMarks.add(4.45);
listOfMarks.add(55.67);
listOfMarks.add(55.7);
listOfMarks.add(32.0);
listOfMarks.add(33.0);
listOfMarks.add(45.0);
//Calling display function of integer array
displayArray(listOfAges);
displayArray(listOfMarks);
}
//Display fucntion of listOfAges array
public static void displayArray(ArrayList<Integer>list){
for(Integer indexes : list){
System.out.println(indexes);
}
}
public static void displayArray(ArrayList<Double>list){
for(Double indexes : list){
System.out.println(indexes);
}
}
}
答案1
得分: 2
由于Java的类型擦除,您无法针对通用类型重载方法。换句话说,您有两个解析为displayArray(ArrayList)
的方法,因此对于重复声明的方法,将会得到编译错误。
幸运的是,在这里您实际上并不需要一个重载的方法 - 因为在Java中,任何对象都有一个toString
方法,您可以只有一个方法,该方法接收一个列表,迭代列表并打印每个项:
public static void displayArray(List<?> list){
for (Object indexes : list) {
System.out.println(indexes);
}
}
英文:
Due to Java's type erasure you can't overload a method over a generic type. In other words, you have two methods that resolve to displayArray(ArrayList)
, so you'll get a compilation error for a doubly declared method.
Luckily, you don't really need an overloaded method here - since any object in Java has a toString
method, you can just have one method that receives a list, iterates over it, and print each item:
public static void displayArray(List<?> list){
for (Object indexes : list) {
System.out.println(indexes);
}
}
答案2
得分: 1
如果我理解你的问题,如果你像这样更改你的方法:
public static void main(String[] args) {
// 创建整数类型的数组列表
ArrayList<Integer> listOfAges = new ArrayList<Integer>();
// 向数组列表添加项目
listOfAges.add(25);
listOfAges.add(36);
listOfAges.add(45);
listOfAges.add(67);
listOfAges.add(87);
listOfAges.add(32);
listOfAges.add(33);
listOfAges.add(45);
// 创建双精度类型的数组列表
ArrayList<Double> listOfMarks = new ArrayList<Double>();
// 向数组列表添加项目
listOfMarks.add(25.4);
listOfMarks.add(36.5);
listOfMarks.add(4.45);
listOfMarks.add(55.67);
listOfMarks.add(55.7);
listOfMarks.add(32.0);
listOfMarks.add(33.0);
listOfMarks.add(45.0);
// 调用整数数组的显示函数
displayArray(listOfAges);
displayArray(listOfMarks);
}
// listOfAges数组的显示函数
public static <T> void displayArray(ArrayList<T> list) {
for (T indexes : list) {
System.out.println(indexes);
}
}
应该可以工作。<T>
被用作通用类型。
英文:
If I understand your problem if you change your method like this:
public static void main(String[] args) {
//Creating integer type array list
ArrayList<Integer> listOfAges = new ArrayList<Integer>();
//Adding items to array list
listOfAges.add(25);
listOfAges.add(36);
listOfAges.add(45);
listOfAges.add(67);
listOfAges.add(87);
listOfAges.add(32);
listOfAges.add(33);
listOfAges.add(45);
//Creating double type array list
ArrayList<Double>listOfMarks = new ArrayList<Double>();
//Adding items to array list
listOfMarks.add(25.4);
listOfMarks.add(36.5);
listOfMarks.add(4.45);
listOfMarks.add(55.67);
listOfMarks.add(55.7);
listOfMarks.add(32.0);
listOfMarks.add(33.0);
listOfMarks.add(45.0);
//Calling display function of integer array
displayArray(listOfAges);
displayArray(listOfMarks);
}
//Display function of listOfAges array
public static <T> void displayArray(ArrayList<T>list){
for(T indexes : list){
System.out.println(indexes);
}
}
It should work. The <T> is use as a generic type.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论