我正在考虑我的应用程序的解决方案.这里的情况:我有一类是需要对象A作为输入参数,并调用几个小方法,这些方法中的每一个方法需要对象A的某些部分(它们不重叠,即method1()需求ObjectA.field1和ObjectA.field2,method2()需求ObjectA.field3等...)现在的问题是:鉴于一般良好的代码实践和性能,最好将ObjectA传递给这些方法中的每一个,这样它们就可以自己提取所需的值,或者更好的只是传递它们的值?我的意思是:
method1(ObjectA);
method2(ObjectA);
Run Code Online (Sandbox Code Playgroud)
要么
method1(Object1.getField1(), ObjectA.getField2());
method2(ObjectA.getField3());
Run Code Online (Sandbox Code Playgroud)
谢谢你的回答!
我试图通过RESTful WS将数据从一个应用程序传送到另一个应用程序并且它可以工作,但我不能使用这些数据,因为我无法投射它... WS返回一个像这样的对象列表:
{id=1, forename=John, surname=Bloggs, username=jbloggs, role=Graduate Developer, office=London, skills=[{technology=Java, experience=2.5}, {technology=Web, experience=2.0}, {technology=iOS, experience=0.0}, {technology=.NET, experience=0.0}]}
Run Code Online (Sandbox Code Playgroud)
让我使用Jackson的ObjectMapper:
ObjectMapper mapper = new ObjectMapper();
List<ConsultantDto> list = new ArrayList<ConsultantDto>();
try {
list = mapper.readValue(con.getInputStream(), ArrayList.class);
} catch (JsonGenerationException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
之后我有3行代码:
System.out.println(list.get(0));
System.out.println(list.get(0).getForename());
return list;
Run Code Online (Sandbox Code Playgroud)
返回,因为此方法的返回值被传递给在浏览器中显示正确数据的其他Web服务.有趣的事情发生在两条打印行中,一条打印来自此帖子顶部的数据({id:1 ...}),另一条打印异常:
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.xxx.xxx.web.dto.rp.ConsultantDto
Run Code Online (Sandbox Code Playgroud)
ConsultantDto和SkillDto是两个合法的类,它们的所有属性都设置为匹配来自WS的数据,所有的getter/setter都已到位.就我而言,LinkedHashMap将东西存储为键:值对,所以我只是看不到这个异常的来源.我如何解决它,为什么ObjectMapper只是正确解析值(当我得到一个ConsultantDto而不是List时它会这样做)?
我使用build-helper-maven-plugin与attach-artifact目标添加自定义的jar文件的Nexus,旁边的EAR文件。构建完成后,jar 文件就在那里,但没有保留它的原始名称,而是将其重命名为<project_name>-ear-<version>-<timestamp>.jar. 我能做些什么来保留它的原始名称,即配置 Maven 以保留该名称?
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.9.1</version>
<executions>
<execution>
<id>attach-artifacts</id>
<phase>package</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>../xxx/src/main/resources/lib/DbSynchronizer.jar</file>
<type>jar</type>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud) Generic type information is not available at runtime in Java for backwards compatibility reasons.
兼容性原因在这里到底意味着什么?另外,在某些情况下通用类型信息是否可用,或者总是不可用,除了向后兼容性之外还有其他原因吗?
我对此有一些了解,但如果有人愿意回答这个问题,我想最终了解它。我读过几篇文章和一些 Oracle 文档,但它们并没有关注我在这里试图解决的问题。
希望简单的问题:
或者我可以只使用DAO并执行以下操作:
ObjectFromDb ob = dao.find(someProperty);
鉴于ObjectFromDb只是一个没有单个JPA注释的常规POJO?
我把它谷歌了一会儿,但它似乎是太具体的问题......
感谢任何建议!
我开始阅读一些关于Java中泛型的文章,有一件事让我困惑:
public static <t> T getFirst(List<T> list)
Run Code Online (Sandbox Code Playgroud)
"此方法将接受对List的引用,并将返回T类型的对象."
很酷,但做<t>什么(小写一个,静态后)?我试过但没能理解它......
我试图弄清楚它是如何工作的,我尝试了几个不同的例子,我只是不理解我得到的结果.fot示例在字符串上使用它,例如:
String s1 = "Hello there how are you";
String [] sa1 = s1.split("\\s");
Run Code Online (Sandbox Code Playgroud)
将返回带有5个明显元素的数组,这对我来说很有意义.这个怎么样:
String s1 = "Hello there how are you";
String [] sa1 = s1.split("\\S");
Run Code Online (Sandbox Code Playgroud)
返回17个空字符串的数组...有人可以帮我理解吗?