额?what?
在B站无意中看到一张图,无意间已发了自己的好奇,实际上我早就知道Java支持Unicode编码也就是可以使用中文命名规则,但是我们可以包装一下,玩一玩完全使用中文编码也未尝不可,但是经过尝试,比较困难,Java不支持运算符重载,也没有办法定义
#define
所以很大程度上限制了我们使用Java开发一款中文编程语言的意图;*(尽管这样做并没有什么意义)
package Chinese.utils;包里内容
public enum 布尔 {
假,真;
}
public final class 工具 {
public static boolean 不为空(Integer length) {
if(length==0) {
return false;
}else {
return true;
}
}
}
public class 基础类型工具 {
public static final boolean 假=false;
public static final boolean 真=true;
public static 字符串 声明字符串(String 内容) {
return new 字符串(内容);
}
public static 数字 声明数字(String 内容) {
return new 数字(内容);
}
public static void main(String[] args) {
字符串 字符串 = 基础类型工具.声明字符串("搜索");
控制台.标准换行输出(字符串);
}
}
public class 控制台 {
public final static void 标准输出(字符串 内容) {
System.out.print(内容);
}
public final static void 标准输出(String 内容) {
System.out.print(内容);
}
public final static void 标准换行输出(字符串 内容) {
System.out.println(内容);
}
public final static void 标准换行输出(Object 内容) {
System.out.println(内容);
}
public final static void 标准换行输出(String 内容) {
System.out.println(内容);
}
public final static void 标准换行输出(数字 内容) {
System.out.println(内容);
}
}
包装的数字类
public class 列表<T> extends ArrayList<T>{
/**
*
*/
private static final long serialVersionUID = 1L;
/**
*
*/
private ArrayList<T> contents;
public 列表() {
super();
this.contents = new ArrayList<>();
}
public void 增加(T t) {
contents.add(t);
}
public Integer 获取长度() {
return contents.size();
}
@Override
public Iterator<T> iterator() {
return contents.iterator();
}
@Override
public int size() {
return contents.size();
}
@Override
public T get(int index) {
return contents.get(index);
}
@Override
public String toString() {
return "列表 [contents=" + contents + "]";
}
}
public class 数字 {
private BigDecimal bDecimal;
public 数字(String val) {
super();
this.bDecimal = new BigDecimal(val);
}
public BigDecimal getbDecimal() {
return bDecimal;
}
public void setbDecimal(BigDecimal bDecimal) {
this.bDecimal = bDecimal;
}
@Override
public String toString() {
return bDecimal.toString();
}
}
public final class 系统 {
public static void 退出() {
System.exit(0);
}
}
public final class 字符串 {
private static String val;
public static void 声明字符串(String val) {
字符串.val = val;
}
public 字符串(String val) {
super();
字符串.val = val;
}
public String getVal() {
return val;
}
public void setVal(String val) {
字符串.val = val;
}
@Override
public String toString() {
return val;
}
}
测试一下:
实体代码 这里要说明一下;本来这样是完全可以使用自己定义的所有类型的,但是由于在实际编码中在Main函数中并不是那么美观,所以这里还是使用java本身提供的基础类型。当然你可以选择自己去实现一下
public class 学生 {
//private 字符串 姓名; private String 姓名; private Integer 年龄; public String 获取姓名() { return 姓名; } public void 设置姓名(String 姓名) { this.姓名 = 姓名; } public Integer 获取年龄() { return 年龄; } public void 设置年龄(Integer 年龄) { this.年龄 = 年龄; } @Override public String toString() { return "学生 [姓名=" + 姓名 + ", 年龄=" + 年龄 + "]"; }
}
测试代码:
public class test {
public static void main(String[] args) { 列表<学生> 学生列表 = new 列表<学生>(); 学生 学生1 = new 学生(); 学生1.设置姓名("tomcat"); 学生1.设置年龄(20); 学生 学生2 = new 学生(); 学生2.设置姓名("apache"); 学生2.设置年龄(33); 学生列表.增加(学生1); 学生列表.增加(学生2); if(!(工具.不为空(学生列表.获取长度())==基础类型工具.真)) { 控制台.标准换行输出(基础类型工具.声明字符串("列表中没有数据")); 系统.退出(); } for(学生 学生详情:学生列表){ 控制台.标准换行输出(学生详情.获取姓名()); 控制台.标准换行输出(学生详情.获取年龄()); } }
}
效果: 与那张图片对比还是差不多