Sar*_*nan 15 java oop interface
我知道java中的标记界面.它用于定义关于类的特定行为.例如,Serializable接口具有将对象存储到字节流及其反向过程的特定功能.但我不知道这个特定行为的实现位置,因为它没有任何方法.
请指导我解决此问题.
mpr*_*hat 29
ObjectOutputStream
并ObjectInputStream
会检查你的班级是否实施Serializable
,Externalizable
.如果是,它将继续或否则将被抛出NonSerializableException
.
创建一个没有任何方法的接口,这是您的标记接口.
样品
public interface IMarkerEntity {
}
Run Code Online (Sandbox Code Playgroud)
如果您的应用程序将任何实现此接口的类作为数据库实体.
示例代码:
public boolean save(Object object) throws InvalidEntityException {
if(!(object instanceof IMarkerEntity)) {
throw new InvalidEntityException("Invalid Entity Found, cannot proceed");
}
database.save(object);
}
Run Code Online (Sandbox Code Playgroud)
整个构思标记接口模式是提供一个的意思是说"是的,我的东西",然后系统会使用默认的过程,就像继续当你标记你的类作为Serialzable它只是告诉这个类可以转换为字节.
Jef*_*rey 14
序列化由ObjectInputStream
和ObjectOutputStream
类处理.如果类具有特殊的序列化需求,则API中概述了要创建的方法.反射用于调用这些方法.
与编写任何其他界面的方式相同.
没有什么可以阻止你将方法放在标记界面中.
现在更常见的做法是使用注释来提供相同的元数据标记接口.
是的我们可以创建我们自己的Marker界面.参见下面的...
interface Marker{
}
class MyException extends Exception {
public MyException(String s){
super(s);
}
}
class A {
void m1() throws MyException{
if((this instanceof Marker)){
System.out.println("successfull");
}
else {
throw new MyException("Must implement interface Marker ");
}
}
}
public class CustomMarkerInterfaceExample extends A implements Marker
{ // if this class will not implement Marker, throw exception
public static void main(String[] args) {
CustomMarkerInterfaceExample a= new CustomMarkerInterfaceExample();
try {
a.m1();
} catch (MyException e) {
System.out.println(e);
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
46355 次 |
最近记录: |