Equals不是结构体Int32里面的方法吗?大哥你看怎么去重写结构体中的方法。
不是抽象方法,你怎么去重写?
结构直接派生自System.ValueType,间接派生自System.Object,但结构是隐式密封的,不能作为基类在派生出其他的结构,也不能从类派生,但可以从接口派生。
结构的特性:
1、结构类型总是隐式密封的,因此在定义结构时不能使用sealed和abstract关键字;
2、因为结构不能作为基类,结构的成员不能使用如下访问修饰符:protected和protected,internal;
3、结构的函数成员不能声明为abstract和virtual,但是可以使用override关键字,用以覆写它的基类System.ValueType中的方法。
基本看不懂你说的东西。百度了下你说的是C#吗?
楼上,别人是java你说.NET干什么?
equals方法你想单独抽出来做工具,这个方法可以是可以,但问题是equals方法是具有普片性的,你如果单独针对几种类型写没太大意义,但如果要有普片性,那么你方法内部实现时又如何确定其比较规则呢?
我希望作为工具,在import的时候能够使用。不希望具有普遍性^^
@小忙: 那么你这个equals方法的适用范围有多大?哪些对象能够使用?你不可能就一object上去了吧?
@Daniel Cai: 希望能写到util包里的static方法,如果需要使用的话,import static .*
例如:boolean flag = equals(String,String);
当然不用equals这个名字就可以,可是我很想多了解些equals
@小忙:
public static boolean equals(String str1,String str2){
if(str1==null^str2==null)
return false;
if(str1==null&&str2==null)
return true;
return str1.equals(str2);
}
@Daniel Cai:
是这样的,如果是取别的名字,例如equalsX,静态导入以后可以直接调用。
但是如果是equals这个名字,那么静态导入,方法指向的还是Object的equals()方法
我猜想,所有的类都是Object的子类,因而都继承了equals方法,应该与此有关
@小忙: 不会啊,一个是两个参数一个是一个参数。
@Daniel Cai:
是啊,可是好神奇。你也试试?
@小忙: 这个可能是语法优先级导致的吧。java不太熟悉,如果出现这种情况的话也只能进行规避了。
@Daniel Cai: 谢谢啊
你想要的equals实现什么效果?和String的一样?
如果是确定了你要的效果就简单了。进行值的比较的话本质上是基本数据类型的比较,你看一下jdk的源码就知道。如果你想要的是根据传入的类型的不同调用不同的equals方法,这个是用反射找到类的equals方法进行比较,估计是用Class参数
这个我了解的,但是和我这个问题是两回事
虽然我是.net但equals写成static方法是要干嘛?
根本原因是想因此为契机对java做深入点的了解
@小忙: 反正依照我对.net的理解,equals写成static就是扯淡。。。
@顾晓北: 我不了解.net,不过你详细说下吧?
@小忙:我纠正一点,equals确实也有静态方法,但归根结底的思想是equals默认有自己的规则,在特别需要自己的规则的时候才自己实现规则,比如:
object obj1=new object();
object obj2=new object();
默认肯定是两个不相等的,但如果有一个类,比如书,我们需要的规则是只要两本书的isbn相等就认为是相等的,那么就自己在book类里自己实现自己的equals规则就行了。。。你把这东西放到util里感觉有点扯。。。
@顾晓北: 为什么说有点扯?我有路径1可达目的,遇到了路径2也可达,路径1就说路径2扯..这样不好吧
@顾晓北: 这个提问,目的在于探究,并不在于解决问题。所以关键并不在于想干什么,而在于想了解什么