举个例子,一个基础的日期类型,就有 6 个。为什么不能简洁一点呢,真是想不懂。 枚举还得特么有构造函数我也是醉了。 C#做的就很好,C#在语言层次上真的是完爆 java
1
ych8398527 2018-09-10 11:00:21 +08:00
C#工资低 (滑稽)
|
2
q397064399 2018-09-10 11:04:16 +08:00
再看看隔壁 Python ..
|
3
salamanderMH 2018-09-10 11:04:21 +08:00
这只是比较小的方面,java 开源方面比 C#好多了
|
4
flyingghost 2018-09-10 11:07:57 +08:00 7
Java 混乱?
JavaScript 水深火热。 PHP 笑而不语。 |
5
murmur 2018-09-10 11:08:10 +08:00
C#输在微软的策略上 开源的太晚了
|
6
zzf2017 2018-09-10 11:08:25 +08:00
月经贴变成日经贴了吗?
|
7
cexy 2018-09-10 11:10:31 +08:00 4
虽然我是个 javaer,但是我坚信 php 天下第一、
|
8
yukiww233 2018-09-10 11:11:04 +08:00
枚举必须有构造函数???
引战还不在点上 |
9
amew 2018-09-10 11:12:19 +08:00
这话说的。。Java 已经好于大多数语言了,你去看看 Kotlin,Python 等等,才多久啊,坑是一个接着一个,JS...算了,我已不想评价
|
10
paparika 2018-09-10 11:12:39 +08:00
枚举有构造也算黑点吗,以前好像还真写过利用枚举构造函数的代码
|
11
metrxqin 2018-09-10 11:13:00 +08:00
百花争鸣不好吗?
|
12
wohenyingyu03 2018-09-10 11:13:16 +08:00
日期类型什么时候是“基础”了……
|
13
bk201 2018-09-10 11:14:16 +08:00
很多时候的啰嗦是为了对老版本程序的兼容.枚举也是类,为什么不能有构造函数?
|
14
keymao 2018-09-10 11:17:20 +08:00 1
Java 混乱?... 没听说过,我只知道 Spring 这种级别的脚手架,你其他语言的不好找...
Java 在企业级应用里面目前几乎是不好替代了.. 他要真是混乱你觉得能行么 |
15
lcgui7 2018-09-10 11:17:38 +08:00
就事论事
1. 时间日期在 java8 之前确实很烂,之后很好了 2. C#的枚举不支持复杂对象吧?似乎没有可比性 |
16
lhx2008 2018-09-10 11:21:06 +08:00 via Android
java8 就直接 localdatetime,之前的 calender 不用了,date 比较通用一点
|
17
lhx2008 2018-09-10 11:21:47 +08:00 via Android
如果用百度搜索来学习,那么任何语言的学习过程都是混乱的
|
18
murmur 2018-09-10 11:26:49 +08:00
不敢苟同 前端的火爆和 JS 没啥关系吧。而且 web 端只有 JS 这一门语言而已,TS 也是扩展了 JS。说实话前端真的是没啥东西。
我二线大连.NET 开发 3 年经验 32 万 20K*16 觉得贵可以先用??版,啥时候能支撑的起在买一个正版支持一下 楼主年薪 32w 你对前端就这个认知么?? 另外宣传 xx 是不是可以 deactivate |
19
ClutchBear 2018-09-10 11:43:26 +08:00
语言这东西,
主要是看生态.... |
20
wenzhoou 2018-09-10 11:44:06 +08:00 via Android
一般项目都会有自己的时间封装吧。如果没有,那就恭喜你。
|
21
ywlvs 2018-09-10 11:49:20 +08:00
别的不说,楼主你这个标题的语法就很混乱了。
|
22
lovedebug 2018-09-10 11:50:47 +08:00 via Android 1
历史遗留问题,最好搜的时候都带 java8,或者读文档吧
|
23
lihongjie0209 2018-09-10 12:01:48 +08:00 1
Date 对象在 JAVA 很早就有了, 以现在的眼光看, 确实有问题.
后面出来一下其他的类来解决这个问题. 目前的最优雅的解决方案是 JAVA8 的日期对象. 混乱? 那倒不至于, 关键是你要理解这些对象存在的意义以及历史原因. 如果说你非要在 JAVA8 中使用 Date 对象做一下很复杂的操作, 那么混乱的是你. |
24
AllOfMe 2018-09-10 12:04:24 +08:00
没有 apache common 之类的工具库,开发 java 确实比较繁琐
|
26
chocotan 2018-09-10 12:16:21 +08:00
就两个例子得出 java 混乱的结论
|
27
sampeng 2018-09-10 12:18:42 +08:00
虽然我喜欢 python,但我还是想说 php 世界第一
|
28
javaWeber 2018-09-10 12:24:33 +08:00
还有 java 的 IO 包。。也挺混乱的。有过度设计的嫌疑。
|
29
tnt666666 2018-09-10 12:25:36 +08:00 via Android
因为你菜啊
|
30
wizardforcel 2018-09-10 12:28:25 +08:00
Java 混乱的地方多了去了。。
File 和 Path Array 和 List<T> 各种 HTTP 客户端 还有这个 BufferedReader,我记得 C# 的 StreamReader 是默认带缓冲的 |
31
wizardforcel 2018-09-10 12:31:01 +08:00
@lihongjie0209 LocalDateTime 本身不复杂,无非是:
new Date 改成 LocalDateTime.of setXxx 改成 withXxx 再赋值回去 这点事情查个文档就好了 混乱的是多个功能相同的名称不同的类 |
32
shijingshijing 2018-09-10 12:35:53 +08:00
Java 里面 swap(int a, int b)也不行
|
33
rockyou12 2018-09-10 12:36:19 +08:00
java 是上世纪 90 年代诞生的,标准库有历史包袱、命名奇怪很正常啊……
|
34
tongyang 2018-09-10 12:37:58 +08:00
你牛逼你写一个
|
35
EPr2hh6LADQWqRVH 2018-09-10 12:44:51 +08:00
不是 Java 乱,是 Java 人多。
人多起来一个不小心就乱了。 同理 JS。 你看 Python,最近人也多起来了,看着吧,马上就乱。 |
36
sudoz 2018-09-10 13:02:13 +08:00
你觉得混乱很可能是因为你用的不熟……
当然也可能是因为用的熟的人已经习惯了 |
37
sonyxperia 2018-09-10 13:03:44 +08:00
。。。。。。
|
38
pabupa 2018-09-10 13:06:02 +08:00 1
这样的问题,我见一个 block 一个。
|
40
nananqujava 2018-09-10 13:09:48 +08:00
Java 确实很混乱, 不过开源的东西太多了, 就赢在这点
|
42
swim2sun 2018-09-10 13:22:48 +08:00
喷得不在点子上。
你有用脚投票的权力,欢迎转 C#,不送 |
43
monsoon 2018-09-10 13:24:08 +08:00 1
因为时间很复杂,所以时间相关的 API 很难设计好……所以 Java 时间相关的 API 修了几次,但是还是不行,所以在 Java 8 又彻底修改了一次。
为什么 C#的日期时间的 API 没那么多问题,因为 Java 比 C# 早了 5 年,所以 C# 有足够的经验可以选择借鉴设计一个更好的时间相关的 API 了。就像 Rust 的设计和类库为什么比起很多旧的语言设计的还要好,因为它有个理论和其他语言实践的地基在那里了,并且不用考虑兼容旧的 API 设计了。而 Java 还要在一开始旧的时间的 API 上进行改进,并且努力做到兼容旧的东西。 为什么 Java 有 File, Files 和 Path 之类的问题?因为 Java 没有 first class 的 Object 支持,另外一个原因是后来的接口都是以 nio 为地基了,而 File 已经是时代所遗留的产物了。所以这里总是有抽象泄漏的。 |
44
bumz 2018-09-10 13:27:53 +08:00
Java 目前唯一的缺点是缺少 Value type,这点 Oracle 和 Gosling 也承认了
很多类其实并不需要做成 Stateful,不需要(非抽象的)继承,引入这两者只会带来含糊和混乱 然而从另一个角度没有 Value type 能大大降低虚拟机、Generic 的设计复杂度和实现难度,然而用作补偿的 Escape Analytics 也不是那么可靠。。。 这也是为什么说了这么多年了,Java 的 Value type 连日程都不知道 |
45
parkcg 2018-09-10 14:56:49 +08:00
php 和 python 笑而不语
|
46
cpdyj0 2018-09-10 15:00:44 +08:00 1
枚举有构造函数明明可以更灵活,怎么反倒成黑点了?你说日期有好几个,为了兼容旧版本没办法的事。
|
47
neptuno 2018-09-10 15:11:58 +08:00
理解了每一个的优缺点就不混乱了,还有,楼主别水了,233
|
48
af463419014 2018-09-10 15:34:21 +08:00
如果你能仔细看一下 jdk 里注释的说明,应该就不会有这么多问题了
关键原因就是以前的一些方法不符合国际规范,又不想把这些方法删除,所以只是加了 Deprecated 标记 翻译一下: Date 是一个用毫秒保存的实例(也就是最终的时间是用一个毫秒数确定) jdk1.1 以前有两个额外的功能,一个是可以把毫秒转换 year,month,hour 等进行操作(也就是 setYear(2018)这种),一个是可以和字符串互相转换(也就是 new Date("2018-01-01")这种) 但是这些额外的功能**不符合国际规范**,所以在 1.1 后,增加了 Calendar 可以和 date 互相转换,并进行具体时间字段操作(比如 setYear,setHour,getDayOfMonth 这些操作),还增加了 DateFormat 来进行 Date 和 String 的互相转换 相应的功能在 Date 中会标记为 Deprecated(过期) 比如 Date 中的 setHour 就标记了 Deprecated 并写明了可以使用 Calendar.set(Calendar.HOUR_OF_DAY, int hours)替代 |
50
xuanbg 2018-09-10 16:40:13 +08:00
一些历史包袱而已,算不得混乱。JavaScript,著名地摊语言了解一下
|
51
jinxiaoyan44 2018-09-10 16:46:27 +08:00 1
|
52
gabezhao 2018-09-10 16:48:29 +08:00 1
住手,你们不要再打了啦!.jpg
|
53
CYKun 2018-09-10 17:00:52 +08:00 via Android
C#也好意思说 Java, .net 1.1 到 2.0 的时候为了泛型另搞一套容器,至今还有一堆老式类型留在标准库里。
语言要发展总要付出代价,想保持纯洁和完美要么一成不变,要么推到重来。事实证明一成不变的全都死了,推倒重来的如 python 挣扎了十年才看到了胜利的曙光。Java 选择了一条正确的路,即使每天都有无数人指着她的缺点吐槽,也撼动不了她的地位,终不过是土鸡瓦狗止增笑耳。 |
54
ZhLTE 2018-09-10 17:02:22 +08:00
单就 equal。。就很乱了
|
55
feverzsj 2018-09-10 17:04:18 +08:00
因为 java 就是渣渣
|
56
ThinkCat 2018-09-10 17:14:48 +08:00
毕竟那么多年了,各个版本迭代
|
57
mosliu 2018-09-10 17:15:27 +08:00
java 这些年来 是能感受到在进步的。
不喜欢的可以用脚投票啊。。 |
58
zdnyp 2018-09-10 18:06:16 +08:00
看看隔壁的 Python....
|
59
ben1024 2018-09-10 18:32:11 +08:00
要不试试世界上最好的语言-PHP
|
60
loryyang 2018-09-10 18:37:41 +08:00
大部分都是历史的包袱,扔不掉只能用妥协的方式来支持
如果你像 python 那样搞,那会给 JAVA 造成重创的 |
61
Guaidaodl 2018-09-10 18:56:19 +08:00 via Android
主要是 Java 坚持向下兼容。而日期的 API 并不是那么好设计的。
至于 enum 有构造函数我觉得是特别有用的功能。 |
62
May725 2018-09-10 19:13:58 +08:00 via iPhone
我持不同的意见,觉得 java 的风格挺一致的。有些遗留的问题,你可以选择一种喜欢的方式去解决
|
63
supuwoerc 2018-09-10 20:31:12 +08:00
呜呜呜,javascript 无辜中枪..
|
64
tedzhou1221 2018-09-10 21:54:31 +08:00 via Android
好的程序员都是扬长避短,不好的都是总是抓着短处不放
|
66
woncode 2018-09-10 23:14:51 +08:00 via Android
竟然吐槽枚举有构造函数,是你体会不到它的美。java 能发展壮大的很大原因恰恰是它不混乱
|
67
qfdk 2018-09-10 23:57:00 +08:00 via iPhone
语言没有好坏 关键是看谁 怎么用...
|
68
wanjun 2018-09-11 06:59:06 +08:00 via Smartisan T1
每一次版本升级都要向前兼容,当然有些设计不好的也必须要保留
|
70
qingfengxm 2018-09-11 09:30:05 +08:00
C#工资低
|
71
SunnyCoffee 2018-09-11 10:02:24 +08:00
看看 OC 再说吧,nil、Nil、NULL 和 NSNull,真是让人头皮发麻
|
72
karllynn 2018-09-11 10:29:14 +08:00
历史问题嘛
枚举设计最好的是 swift,总是新的超过旧的 |
73
fundebug 2018-09-11 10:39:09 +08:00
@salamanderMH 如果说开源的话,JavaScript 完爆 Java 以及其他各种语言....
|
74
JaxXu 2018-09-11 10:42:26 +08:00
楼主大概是想要一个完全符合他个人想法习惯风格的语言,那就自己写一个好了
|
75
taaaang 2018-09-11 11:35:40 +08:00
构造函数构造复杂枚举有问题? 日期类不停的升级换代,用你喜欢的不久好了?可能楼主需要一门自己的语言。
|
76
gowk 2018-09-11 13:48:47 +08:00
看了王垠的文章,谁知道这个思考题该怎么理解:
有人指出,Java 的引用类型可以是 null,而原始类型不行,所以引用类型和值类型还是有区别的。但是其实这并不能否认本文指出的观点,你可以想想这是为什么吗? |
77
HangoX 2018-09-11 14:24:15 +08:00
历史包袱吧,java 兼容旧版比较多。讲道理枚举有构造方法哪里惹你了。。。
|
78
jorneyr 2018-09-11 14:55:06 +08:00
Java 的枚举使用的是 flyweight 设计模式,是个对象池,你心目中的枚举是什么样的呢?
|
80
douya0808 2018-09-11 18:03:15 +08:00
Java8 的日期已经很简洁了吧,8 以下版本引入一下 Joda-Time 也很好用
|
81
mmdsun 2018-09-12 08:46:19 +08:00 via Android
@ych8398527 c# unity3d 做游戏工资不低的。
|