小编Kri*_*nya的帖子

如何比较两个对象并找到更改的字段/属性?

我需要编写一些通用解决方案来找出两个对象中的哪些属性已更改并返回更改的属性(而不是值)。

class Student {
    public String name;
    public Address address;
    public int age;
}

class Address {
    public String hno;
    public String street;
    public int pin;
}

public class Test {
    public static void main(String... arg) {

        Student s1 = new Student();
        s1.name = "Krishna";
        s1.age = 30;
        s1.address = new Address();
        s1.address.hno = "2-2-22";
        s1.address.street = "somewhere";
        s1.address.pin = 123;

        Student s2 = new Student();
        s2.name = "Krishna";
        s2.age = 20;
        s2.address = new Address();
        s2.address.hno = "1-1-11";
        s2.address.street …
Run Code Online (Sandbox Code Playgroud)

java

10
推荐指数
3
解决办法
1万
查看次数

@MultipartForm如何获取原始文件名?

我正在使用jboss的rest-easy multipart提供程序来导入文件.我在这里阅读http://docs.jboss.org/resteasy/docs/1.0.0.GA/userguide/html/Content_Marshalling_Providers.html#multipartform_annotation关于@MultipartForm,因为我可以用我的POJO完全映射它.

以下是我的POJO

public class SoftwarePackageForm {

    @FormParam("softwarePackage")
    private File file;

    private String contentDisposition;

    public File getFile() {
        return file;
    }

    public void setFile(File file) {
        this.file = file;
    }

    public String getContentDisposition() {
        return contentDisposition;
    }

    public void setContentDisposition(String contentDisposition) {
        this.contentDisposition = contentDisposition;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我得到了文件对象并打印了它的绝对路径,它返回了一个类型为file的文件名.扩展名和上传的文件名将丢失.我的客户端正在尝试上传档案文件(zip,tar,z)

我需要在服务器端提供此信息,以便我可以正确应用un-archive程序.

原始文件名以content-disposition标头发送到服务器.

我怎样才能获得这些信息?或至少如何说jboss用上传的文件名和扩展名保存文件?它可以从我的应用程序配置吗?

java jboss web-services java-ee resteasy

9
推荐指数
2
解决办法
1万
查看次数

内在阶级的目的是什么?

我正在阅读接口和类中的内部类.我无法理解真正的用途.但是我不想在这篇文章中讨论关于接口内部内部类的任何内容.

到目前为止,我已经使用内部类作为回调.我可以在同一个地方宣布课程.

假设我有一个学生列表,我想按ID排序.我必须实现Comparator接口并将其作为Collections的sort方法的参数提供.

public class StudentList {

    public static void main(String[] args) {

        List<Student> students = new ArrayList<Student>();

        Student student = new Student();
        student.setId(1);
        student.setName("Krishna");
        students.add(student);

        student = new Student();
        student.setId(2);
        student.setName("Chaitanya");
        students.add(student);

        Collections.sort(students, new StudentList().new MyComparator());
    }

    public class MyComparator implements Comparator<Student> {

        @Override
        public int compare(Student o1, Student o2) {

            if (o1.getId() < o2.getId()) {
                return 1;
            } else if (o1.getId() > o2.getId()) {
                return -1;
            } else {
                return 0;
            }
        }

    }

}
Run Code Online (Sandbox Code Playgroud)

我也可以这样做

public class …
Run Code Online (Sandbox Code Playgroud)

java inner-classes

8
推荐指数
1
解决办法
2920
查看次数

html表vs css显示表

最近我在这里问了一个问题,其中一个答案建议使用display:table和display:table-cell css properties.

通常,UI设计者建议不要使用表格进行布局.如果我在布局时使用这两个css属性怎么办?是否与使用表格进行布局相同?

html css

7
推荐指数
2
解决办法
1787
查看次数

何时有状态会话bean被销毁?

我是ejbs的新手,我想知道有状态会话bean是否会被销毁.我在servlet中注入了一个有状态会话bean.即使在30分钟后,我发现豆子是活跃的.我正在使用jboss eap 6.0.我相信HttpSession与有状态会话bean无关.我使HttpSession失效,以确保HttpSession与statful会话bean无关.那么,如果我的应用程序有很多用户,如果我创建一个新bean,那么我的服务器的性能就会降低.容器如何管理有状态会话bean.豆被移除或销毁的时间是什么时候?

我读过这篇文章和其他几篇文章.但我没有明白.

java stateful-session-bean ejb-3.0 java-ee-6

7
推荐指数
1
解决办法
3070
查看次数

InterceptorBinding不起作用

我创建了一个自定义注释,如下所示

@InterceptorBinding
@Retention(RUNTIME)
@Target(TYPE, METHOD)
public @interface Traceable {}
Run Code Online (Sandbox Code Playgroud)

我写了一个拦截器,如下所示

@Traceable
@Interceptor
public class EnterExitLogger {
    @AroundInvoke
    public Object aroundInvoke(InvocatiobContext c) {}
}
Run Code Online (Sandbox Code Playgroud)

拦截器和注释位于名为common-utils的模块中.

我在类级别用@Traceable注释了我的目标类,如下所示

@Traceable
public class CDIManagedBean {
}
Run Code Online (Sandbox Code Playgroud)

我在beans.xml文件中声明了拦截器条目,如下所示

<interceptors>
    <class>my.package.EnterExitLogger</class>
</interceptors>
Run Code Online (Sandbox Code Playgroud)

目标类位于单独的模块中.beans.xml位于目标类模块的META-INF目录中.

目标类的方法是从rest类调用的.当我调用方法时,不会调用拦截器的AroundInvoke方法.

我阅读了文档,并了解拦截器应该包含一个公共的无参数构造函数.我加了.但仍然没有调用拦截器.

我在阅读完文档后在自定义注释中添加了@Inherited.但仍然没有调用拦截器.

从文档中我注意到拦截器实现了Serializable接口.虽然没有提到我也实现了Serializable.仍然没有奏效.

然后我从拦截器,beans.xml文件和目标类中删除了自定义注释.我还从拦截器中删除了public no参数构造函数并删除了Serializable.

然后我用目标类注释@Interceptors(EnterExitLogger.class)并调用了流程.我的拦截器被调用了.

任何人都可以告诉我如何处理InterceptorBinding?

PS

我正在WAS 8.5服务器上部署我的耳朵.

java java-ee interceptor java-ee-6 websphere-8

6
推荐指数
2
解决办法
5034
查看次数

如何在列表中自定义/排序对象

我有一个对象列表,我想按特定顺序排序/排序.

我有一个Promotion对象列表.每个促销活动都有描述.所有促销中的两个将描述设置为"高级"和"普通"

我想对列表进行排序/排序,使得带有描述"premium"的促销应始终位于列表的末尾,并且具有描述"普通"的促销始终位于list.size - 1位置.以下示例

[{description = ...},{description = ...},..... {description = ordinary},{description = premium}]

我尝试使用Collections.sort通过传递下面的自定义Comparator对对象进行排序

public int compare(Promotion p1, Promotion p2) {
        if(p1.getDescription().equals("ordinary")) {
    return -size-1; // size is the size of the list passed as a constructor argument to the Comparator.
    }
if(p1.getDescription().equals("premium")) {
    return -size;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用上面的代码,测试时没有得到所需的输出.

我后来在每个if条件中添加了另一个检查来检查p2对象中的描述,如下所示

p1.getDescription().equals("premium") || p2.getDescription().equals("premium")
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?或者我以错误的方式使用Collections.sort?任何人都可以建议/帮助我吗?

java sorting

6
推荐指数
1
解决办法
370
查看次数

Collections.binarySearch在手动搜索列表时的性能如何?

我想知道使用哪一个.我有一份学生名单.我想用他的名字搜索一个学生.直到现在我通过迭代列表手动完成它,如下所示

for(int i = 0; i < list.size(); i++) {
    Student student = list.get(i);
    if(student.getName().equals(studentNameIWantToSearch)) {
        index = i;
        break;
    }
}

Student student = list.get(index);
//my logic from here
Run Code Online (Sandbox Code Playgroud)

最近我看到了一个binarySearch(List<? extends T> list, T key, Comparator<? super T> c)Collections类中命名的方法.我读到了这个.为了执行二进制搜索,必须对列表进行排序,并且必须将该binarySearch方法作为参数传递给方法.

现在,如果我不想对列表进行排序怎么办?因为我不需要对它进行排序.我认为排序是我逻辑上的额外开销.

任何人都可以告诉我为什么我应该使用二进制搜索而不是手动搜索.我知道二进制搜索需要O(log n)时间.手动搜索它需要O(n).我也担心排序.对整个列表进行排序也需要一些时间.不幸的是我不知道java使用什么算法.我希望java使用最好的算法进行排序.但我还是想知道.

谢谢大家.

java collections

5
推荐指数
1
解决办法
2419
查看次数

如何在pom文件中获取maven repo位置

我有一个maven目标,它将执行一个groovy文件.这个groovy文件使用如下所示的路径

System.getProperty("user.home");
Run Code Online (Sandbox Code Playgroud)

此根路径用于构建指向本地存储库中的jar文件的另一个路径.

不幸的是,我没有C驱动器的权限,我正在使用D盘.所以我的存储库也在D盘中.

因此,我的构建失败了.为了传递我的构建,我将命令行参数传递给maven,如下所示

mvn clean install -Duser.home=D:\users\krishna
Run Code Online (Sandbox Code Playgroud)

我想知道是否有像{m2RepoHome}这样的pom变量/占位符,以便我可以在我的groovy文件中使用相同的变量.

提前致谢

maven

5
推荐指数
1
解决办法
4176
查看次数

如何在Java EE环境中创建线程?

我有一个要求,我必须在表中保留一些数据,持久可能需要一些时间.基本上我想坚持一个日志.我不希望执行等到持续完成.

我知道我必须使用线程来完成这项任务,我知道不鼓励在企业应用程序中创建线程.

所以我开始阅读有关工作管理器的知识,并在websphere应用服务器8.5中理解并尝试了一个示例程序.

我在websphere中使用了asynchbeans.jar,现在我很困扰我正在编写特定于供应商的代码.

然后我遇到了在Oracle java文档中描述的commonj work api.现在我想使用fabric3的commonj api.

我怀疑的是,有没有更好的方法来完成同样的任务?一种EJB方式?或者工作经理对我的要求有好处吗?

java multithreading workmanagers java-ee-6 websphere-8

5
推荐指数
1
解决办法
2851
查看次数