java - 如何在 Java 中打印智能数组?
问题描述
我想打印单变量、数组和双数组,我使用以下代码,在需要时添加一个类型,但是......如你所见......它有效但不聪明。
所以,问题是“有打印数组的聪明方法吗?”
import java.util.Arrays;
class Rec{
int val;
public String toString(){
return "" + val;
}
Rec(int val){this.val=val;}
}
public class Main
{
public static void main(String[] args) {
Rec r = new Rec(0);
Boolean[] ba = new Boolean[]{true, false, true, true};
Rec[] ra = new Rec[]{new Rec(1), new Rec(2), new Rec(3)};
int[][] iaa = new int[][]{{1,2,3}, {3,4,5}};
System.out.printf("r=%s ba=%s ra=%s iaa=%s \n", s(r), s(ba), s(ra), s(iaa));
}
static <T> String s(T n) {
if(n instanceof int[]){
return Arrays.toString((int[])n);
}else if(n instanceof int[][]){
return Arrays.deepToString((int[][])n);
}else if(n instanceof boolean[]){
return Arrays.toString((boolean[])n);
}else if(n instanceof boolean[][]){
return Arrays.deepToString((boolean[][])n);
}else if(n instanceof Boolean[]){
return Arrays.toString((Boolean[])n);
}else if(n instanceof Rec[]){
return Arrays.toString((Rec[])n);
//}else if(n instanceof T[]){ // error: illegal generic type for instanceof
// return Arrays.toString((T[])n);
}else{
return "" + n;
}
}
}
解决方案
如果您真的想为可变数组自定义打印,那么为什么不执行以下操作:
public static String s(Object s) {
return s.toString();
}
public static String s(Object[] s) {
return Arrays.toString(s);
}
public static String s(Object[][] s) {
return Arrays.deepToString(s);
}
// For each primitive type of your single or multi dimension
// declare the following for either single or multi dimensional
public static String s(int[][] s) {
return Arrays.deepToString(s);
}
public static String s(int[] s) {
return Arrays.toString(s);
}
但请记住,您基本上是在重新打包 API 已经完成的功能。
推荐阅读
- python-3.x - 在Python中获取小于或等于阈值的相邻元素的索引
- javascript - 用 JavaScript 拍摄网络摄像头的照片并将其发送到数据库
- graphql - GraphQL - 如何在查询多个突变期间检索先前突变的 id
- heroku - Heroku:部署cherrypy应用程序的问题
- vue.js - 如何在 vue 中为 couldbuild 设置云功能?
- java - 我在 Object 中得到 json 响应,但我想在 Json Array 中
- java - 需要在spring boot的属性文件中加密数据库密码
- python - 在具有相同 ID 的单个元素或行中拆分列表 os 字符串和整数
- webpack - 问题:关于 postcss-plugin-px2rem 排除
- reactjs - 为什么应用程序会被 recharts 组件迷住?