oop如何用Java编写我们自己的标记接口?
我知道java中的标记接口。它用于定义类的特定行为。例如,Serializable接口具有将对象存储到字节流及其反向进程的特定能力。但我不知道这个特定行为在哪里实现,因为它没有任何方法
- JVM如何调用这种特定行为李>
- 如何编写我们自己的标记接口?你能给我一个简单的用户定义的标记界面让我理解吗李>
- 在marker接口中可以有方法吗李>
请指导我解决这个问题
你可以在下面搜索框中键入要查询的问题!
我知道java中的标记接口。它用于定义类的特定行为。例如,Serializable接口具有将对象存储到字节流及其反向进程的特定能力。但我不知道这个特定行为在哪里实现,因为它没有任何方法
请指导我解决这个问题
# 1 楼答案
ObjectOutputStream
和ObjectInputStream
将检查您的类是否实现了Serializable
、Externalizable
。如果是,它将继续,否则将抛出NonSerializableException
创建一个没有任何方法的接口,这就是您的标记接口
样品
如果应用程序将实现此接口的任何类作为数据库实体
示例代码:
{a1}的整个思想是提供一种表示“是的,我是某样东西”的方法,然后系统将继续默认过程,比如当您将类标记为可序列化时,它只告诉您该类可以转换为字节
# 2 楼答案
标记接口没有方法。Java有内置的标记接口,如
Serializable
、Clonable
&EventListner
等,JVM可以理解我们可以创建自己的标记接口,但它与JVM无关,我们可以使用
instanceOf
添加一些检查创建空接口
编写一个类并实现接口
Main
类来检查标记接口instanceof
# 3 楼答案
正如Wikipedia文章Marker interface pattern中很好地解释的那样,标记接口是元数据的一种形式。客户机代码可以测试对象是否是标记接口的实例,并相应地调整其(客户机)行为。这是一个标记接口:
然后,代码可以测试对象是否为
CoolObject
,并对其进行处理:Serializable
接口被定义为Java语言的一部分。您不能自己实现该级别的行为您可以将方法添加到标记器接口,但这会将标记模式与接口的其他概念用途混合在一起,可能会造成混淆。(实现接口的类是为了标记它,还是为了它的行为,或者两者兼而有之?)
正如Wikipedia文章中所解释的,Java中的标记接口可以(也可能应该)替换为annotations
# 4 楼答案
序列化由
ObjectInputStream
和ObjectOutputStream
类处理。如果类有特殊的序列化需要,则要创建的方法将在API中列出。反射用于调用这些方法与编写任何其他接口的方式相同
没有什么能阻止您将方法放入标记接口中
现在更常见的做法是使用annotations提供接口提供的相同元数据标记
# 5 楼答案
据我所知,标记接口通过“实用程序”类获得其行为。例如,如果您阅读过四人帮的《设计模式》一书,您就会看到一个类的行为,该类使用另一个类中定义的标记接口进行标记
例如,您有一个标记接口“Saveable”。您有一个进程,该进程遍历实现该接口的所有类(通过反射),然后对其执行保存操作
# 6 楼答案
是的,我们可以创建自己的标记接口。。请看下面的一个