获取generics类的通用参数的类型名称

在使用generics时我在java中遇到一个小问题。 我有一个A类: public class A 在A的方法中,我需要获取T的类型名称。 有没有办法用T找到字符串? (如果我创建A temp = new A();我希望能够在某一点获得java.lang.String – 我必须使用generics,因为我的一个方法必须返回一个List )。 这似乎很容易,但我不知道该怎么做。

如何使用Maven“shade”插件将Apache CXF应用程序打包到单片JAR中

我正在编写一个基于控制台的Java应用程序,旨在由cron以批处理方式运行。 批处理应用程序使用Apache CXF框架为JAX-WS调用SOAP Web服务。 为了简化部署并防止CLASSPATH问题,我想将应用程序(及其所有依赖项)捆绑到一个单一的JAR文件中…使用Maven的“shade”插件 。 当我从Eclipse工作区运行它时,我的应用程序工作正常。 但是,当我尝试执行着色的JAR文件时,我得到一个堆栈跟踪,如下所示: org.apache.cxf.service.factory.ServiceConstructionException: Could not resolve a binding for null at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createBindingInfo(AbstractWSDLBasedEndpointFactory.java:404) at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpointInfo(AbstractWSDLBasedEndpointFactory.java:258) at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:146) at org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactoryBean.java:52) at org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:102) at org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create(JaxWsProxyFactoryBean.java:115) at com.example.gui.domain.Session.getService(Session.java:145) at com.example.gui.domain.service.soap.AbstractServiceImpl.(AbstractServiceImpl.java:23) at com.example.gui.domain.service.soap.GetUserConsoleOrgsImpl.(GetUserConsoleOrgsImpl.java:14) at com.example.gui.domain.service.ServiceFactory.getGetUserConsoleOrgsService(ServiceFactory.java:443) at com.example.gui.domain.AccessManager.getOrgs(AccessManager.java:62) at com.example.gui.windows.ConsoleApplet.login (ConsoleApplet.java:1253) at com.example.gui.windows.ConsoleApplet.init(ConsoleApplet.java:1227) at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: org.apache.cxf.BusException: No binding factory […]

Java中具有相同价值的字符串?

一个快速而混乱的问题。 如果A级和B级内有这个: – String name=”SomeName”; 并且这两个类都是实例化的,两个实例引用变量“name”的相同内存位置是否正确我们这样做objA.name或objB.name? 它具有值“SomeName”,并且由于String是不可变的,因此同一JVM的两个类的多个实例重复使用相同的变量? 我在网上看到的地方,除非有 String example=new String(“something”); 如果使用,前一个声明总是创建一个副本,并且它将被使用,直到它的所有应用程序都被终止以回收内存。 注意:我看到了几个答案,我指望哪一个,有人可以得出结论。 谢谢大家的努力,感激不尽。

如何将java日志控制台输出从std err更改为std out?

我正在使用java.util.logging的标准ConsoleHandler ,默认情况下,控制台输出将定向到错误流(即System.err )。 如何将控制台输出更改为输出流(即System.out )?

在Spring MVC中的servlet映射中,如何映射url模式目录的根?

testServlet /test/* 如果我点击/测试/页面 ,上面的工作将会起作用。 但是,击中/测试或/ test /将不起作用。 我正在使用Spring MVC,我的请求映射如下: @RequestMapping(value = {“”,”/”}) 编辑: 我正在使用独立项目进行validation,但这似乎是Spring的UrlPathHelper的一个错误。 当存在上下文和servlet路径时,以下方法返回不正确的路径,并且在没有尾部斜杠的情况下命中servlet。 public String getPathWithinApplication(HttpServletRequest request) { String contextPath = getContextPath(request); String requestUri = getRequestUri(request); if (StringUtils.startsWithIgnoreCase(requestUri, contextPath)) { // Normal case: URI contains context path. String path = requestUri.substring(contextPath.length()); return (StringUtils.hasText(path) ? path : “/”); } else { // Special case: […]

保留适合枚举的数据

大多数项目都有某种类型的数据,这些数据在发行版之间基本上是静态的,非常适合用作枚举,如状态,事务类型,错误代码等。例如,我只使用一个公共状态枚举: public enum Status { ACTIVE(10, “Active”); EXPIRED(11, “Expired”); /* other statuses… */ /* constructors, getters, etc. */ } 我想知道其他人在这些数据的持久性方面做了些什么。 我看到一些选项,每个选项都有一些明显的优点和缺点: 在状态表中保留可能的状态,并保留所有可能的状态域对象,以便在整个应用程序中使用 只使用枚举,不要保留可用状态列表,在我和我的DBA之间创建数据一致性圣战 保持状态并在代码中维护枚举,但不要将它们绑定在一起,从而创建重复的数据 我的偏好是第二种选择,虽然我的DBA声称我们的最终用户可能想要访问原始数据来生成报告,而不是持久化状态会导致数据模型不完整(反驳:这可以通过文档解决) 。 大多数人在这里使用会议吗? 人们对每个人的经历是什么,还有其他选择吗? 编辑: 在考虑了一段时间之后,我真正的持久性斗争来自于处理与数据库中的状态相关联的id值。 安装应用程序时,这些值将作为默认数据插入。 此时,它们具有可用作其他表中的外键的ID。 我觉得我的代码需要知道这些ID,以便我可以轻松检索状态对象并将它们分配给其他对象。 我该怎么办? 我可以添加另一个字段,比如“代码”,查看内容,或者只是按名称查找状态,这是icky。

使用OpenCSV解析包含Unicode字符的CSV文件

我正在尝试在NetBeans 6.0.1中使用OpenCSV解析.csv文件。 我的文件包含一些Unicode字符。 当我在输出中写入时,角色以其他forms出现,如(HJ1′-E /;)。 当我在记事本中打开此文件时,它看起来没问题。 我用过的代码: CSVReader reader=new CSVReader(new FileReader(“d:\\a.csv”),’,’,’\”,1); String[] line; while((line=reader.readNext())!=null){ StringBuilder stb=new StringBuilder(400); for(int i=0;i<line.length;i++){ stb.append(line[i]); stb.append(";"); } System.out.println( stb); }

JavaFX的TextField的值更改侦听器

我想在我的JavaFX’s TextField添加一种listener ,当用户更改TextField的值时,Application会在控制台上打印一些东西。 我搜索过,我发现了以下非常相似的问题: JTextField的值更改侦听器 提到的问题的答案是非常明确和有效的,但不幸的是它只对JTextField (非JavaFX’s TextField )有用,因为它说你应该像这样使用DocumentListener: // Listen for changes in the text textField.getDocument().addDocumentListener(new DocumentListener() { public void changedUpdate(DocumentEvent e) { warn(); } public void removeUpdate(DocumentEvent e) { warn(); } public void insertUpdate(DocumentEvent e) { warn(); } 但是在JavaFX的TextFields中你无法做到。 所以? 解决办法是什么? (用代码描述可能非常好,但如果不可能,任何提示将不胜感激)

如何解析xml到java对象?

我有一个XML用于配置一些规则,它没有复杂的结构,但是这个配置在我的系统中的任何地方使用,所以我想将这个XML解析为java对象并设计为单例模式,这是我的好方法可以使用它直接解析XML到Java对象而无需编写太多代码? 我做了一些关于谷歌的研究,知道JAXB是一个选择,我的应用程序只是一些工具程序,它读取规则,然后按照做的东西,JAXB可以更广泛地用于Web服务,它适合我的项目? 如果是的话,最重要的问题是,我用xjc根据xsd文件生成java对象的源类,在unmarshal之后我会直接得到这些configurationType对象,是否有必要再次转换,(从JaxB类到我拥有的java pojo对象)配置),我看到大多数编码器做到了这一点,但为什么呢? 因为它们是一些数据,只是从生成的对象到JAXB并复制到自己创建的POJO对象

具有相同方法签名的两个接口在Java类中实现

我有两个Java接口和一个实现类。 (我已经使用Eclipse直接运行程序,并且我没有尝试通过从命令行显式编译来检查任何编译器警告等。) 为什么他们没有问题? 为什么Java允许这样做,即使它满足两个接口的“契约”但是在实现类时产生歧义? 更新了示例。 public interface CassettePlayer { void play(); } public interface DVDPlayer { void play(); } public class CarPlayer implements CassettePlayer,DVDPlayer{ @Override public void play() { System.out.println(“This plays DVD, screw you Cassette !”); } public static void main(String args[]) { CarPlayer cp = new CarPlayer(); cp.play(); CassettePlayer firstInterface = new CarPlayer(); firstInterface.play(); […]