如果我们将一个对象强制转换为接口,该对象将无法调用其自己的方法吗?在下面的示例中,myObj
将只能调用MyInterface方法吗?
MyInterface myObj = new Obj();
如果正确,那么这两个对象之间有什么区别:
MyInterface myObj = new Obj();
MyInterface mySec = new Sec();
谢谢你的帮助
MyInterface myObj = new Obj();
MyInterface mySec = new Sec();
对于这是合法的,都Obj
和Sec
将要成为执行者MyInterface
。这两个对象之间的区别在于它们 如何
提供该实现。Obj
并且Sec
可以做两个非常不同或非常相似的事情,但是它们的共同点是它们会遵守您可以依赖的合同。考虑你有办法
public void doSomethingWith(MyInterface thing) {
thing.frob();
}
可以将每个对象myObj
和mySec
传递到此方法中,然后该方法可以使用该对象的frob
方法(假设frob是接口声明的一部分)。这是 解放
。通过对接口而不是对实现进行编程,这使您可以做非常强大的事情。例如,您可以扩展类的功能,而无需更改这些类中的代码行,您只需传递依赖项的不同实现即可。你是不依赖于,或
再加上 ,该方法内的任何一个implentation doSomethingWith
。
但我也读到,如果我们将对象myObj声明为MyInterface,则myObj将无法使用自己的方法(来自Obj类),是否正确
在内部,的实例Obj
将继续拥有对该Obj
API的完全访问权限。myObj
仍然是Obj
,它将始终能够使用其自己的实现详细信息。
public interface MyInterface {
void frob();
}
public class Obj implements MyInterface {
public void frob() {
doFrobbing();
}
private void doFrobbing() {
System.out.println("frobbing");
}
public static void main(String[] args) {
MyInterface myObj = new Obj();
myObj.frob(); // still internally calls doFrobbing()
((Obj)myObj).doFrobbing(); // visible only via class reference
}
}
的实例Obj
仍将是的实例Obj
,并且这些实例仍将能够使用doFrobbing
。在外部,通过接口引用 使用 这些实例的人员将只能访问接口方法。
问题内容: 是否可以将Java对象直接转换为JsonNode-Object? 我发现解决此问题的唯一方法是将Java对象转换为String,然后转换为JsonNode: 问题答案: 从Jackson 1.6开始,您可以使用: 要么
问题内容: 我正在将struts2用于Action,将jquery用于UI … 我想知道如何将Map对象转换为JSON对象并将其发送回UI, 现在可以在JSP页面中将其打印为普通的Java Map对象: 但我希望它是这样的: 我将如何实现这一目标…? 问题答案: 尝试Gson: 不过,我不建议将这种代码放入JSP。诸如此类的事情应该存在于Servlet或Action类之类的控制器中。 您还绝对不希
问题内容: 我对服务进行了调用,并将响应存储在中。但是,我试图将其转换为类对象并得到错误。这是我的代码: 响应如下所示: 这是该类的样子: 但是我得到了错误: 我究竟做错了什么? 编辑1: 这是从答案中使用gson的尝试: 但是我得到了错误: 问题答案: 找出问题所在。需要提取jsonobject而不是获取字符串。这是解决此问题的行:
我应该使用什么API将Java对象转换为CSV。我可以使用google gson将java对象转换为CSV格式吗?
我怎么能转换java对象到xml?我试图转换一个传入的java对象到xml在Spring集成与转换器豆。有没有其他的方法比编组在Jaxb?喜欢使用@TypeConver。或实现转换器类。
例如:Date值为:“dateCollected”:fri Jul 07 00:00:00 IST 1989, 但它只服用星期五而不是整个日期。