在Java类中如何隐藏不受支持的接口方法?
实际上,一旦实现接口,就不能为其所有方法提供实现,或者使类抽象化。没有实现就无法跳过接口的方法(除非它们是默认方法)。但是,如果尝试跳过接口的实现方法,则会生成编译时错误。
示例
interface MyInterface{ public static int num = 100; public void sample(); public void getDetails(); public void setNumber(int num); public void setString(String data); } public class InterfaceExample implements MyInterface{ public static int num = 10000; public void sample() { System.out.println("这是sample方法的实现"); } public static void main(String args[]) { InterfaceExample obj = new InterfaceExample(); obj.sample(); } }
输出结果
编译时错误
InterfaceExample.java:8: error: InterfaceExample is not abstract and does not override abstract method setString(String) in MyInterface public class InterfaceExample implements MyInterface{ ^ 1 error
但是,您可以实现这些不需要的/不受支持的方法,并从中抛出异常,例如UnsupportedOperationException或IllegalStateException。
示例
interface MyInterface{ public void sample(); public void getDetails(); public void setNumber(int num); public void setString(String data); } public class InterfaceExample implements MyInterface{ public void getDetails() { try { throw new UnsupportedOperationException(); } catch(UnsupportedOperationException ex) { System.out.println("Method not supported"); } } public void setNumber(int num) { try { throw new UnsupportedOperationException(); } catch(UnsupportedOperationException ex) { System.out.println("Method not supported"); } } public void setString(String data) { try { throw new UnsupportedOperationException(); } catch(UnsupportedOperationException ex) { System.out.println("Method not supported"); } } public void sample() { System.out.println("这是sample方法的实现"); } public static void main(String args[]) { InterfaceExample obj = new InterfaceExample(); obj.sample(); obj.getDetails(); obj.setNumber(21); obj.setString("data"); } }
输出结果
这是sample方法的实现 Method not supported Method not supported Method not supported