小编Mic*_*ber的帖子

如何从默认包导入类

可能重复:如何访问default-package中的java-classes?


我正在使用Eclipse 3.5,我创建了一个包含一些包结构和默认包的项目.我在默认包中有一个类 - Calculations.java,我想在任何一个包中使用该类(例如in com.company.calc).当我尝试使用默认包中的类时,它给了我一个编译器错误.它无法识别默认包中的类.问题出在哪儿?

Calculations.java - 源代码

public class Calculations {
    native public int Calculate(int contextId);
    native public double GetProgress(int contextId);
    static  {
        System.loadLibrary("Calc");
    }
}
Run Code Online (Sandbox Code Playgroud)

我不能把我的班级放在任何其他包中.这个类有一些在Delphi中实现的本机方法.如果我将该类放在任何文件夹中,我将不得不对我想要避免的DLL进行更改(实际上 - 我不能).这就是为什么我把我的类放在默认包中.

java java-native-interface native-methods default-package

90
推荐指数
5
解决办法
14万
查看次数

枚举值().长度与私有字段

我有这样的枚举:

public enum Configuration {
    XML(1),
    XSLT(10),
    TXT(100),
    HTML(2),
    DB(20);

    private final int id;
    private Configuration(int id) {
        this.id = id;
    }
    public int getId() { return id; }
}
Run Code Online (Sandbox Code Playgroud)

有时我需要检查枚举中有多少个字段.什么是最好的解决方案?我应该使用方法"values().length"吗?或许,我必须在枚举中创建常量字段,如下所示:

public enum Configuration {
    XML(1),
    XSLT(10),
    TXT(100),
    HTML(2),
    DB(20);

    private final int id;
    private Configuration(int id) {
        this.id = id;
    }
    public int getId() { return id; }

    public static final int Size = 5;
}
Run Code Online (Sandbox Code Playgroud)

什么是最快,更优雅的解决方案?

java enums

55
推荐指数
4
解决办法
6万
查看次数

使用Jackson序列化一个Double到2的小数位

我正在使用Jackson,Spring MVC写出一些简单的对象JSON.其中一个对象具有amount类型的属性Double.(我知道这Double不应该用作金额.但是,这不是我的代码.)

JSON输出中,我想将数量限制为2位小数.目前它显示为:

"amount":459.99999999999994
Run Code Online (Sandbox Code Playgroud)

我已经尝试过使用Spring 3的@NumberFormat注释,但是没有在这方面取得成功.看起来其他人也有问题:在这里将JSON绑定到JavaBean propertiesenter链接描述时,MappingJacksonHttpMessageConverter的ObjectMapper不使用ConversionService.

此外,我尝试使用@JsonSerialize注释,使用自定义序列化程序.
在模型中:

@JsonSerialize(using = CustomDoubleSerializer.class)
public Double getAmount()
Run Code Online (Sandbox Code Playgroud)

和序列化器实现:

public class CustomDoubleSerializer extends JsonSerializer<Double> {
    @Override
    public void serialize(Double value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonGenerationException {
        if (null == value) {
            //write the word 'null' if there's no value available
            jgen.writeNull();
        } else {
            final String pattern = ".##";
            //final String …
Run Code Online (Sandbox Code Playgroud)

java jackson

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

杰克逊为什么还要将瞬态成员序列化?

我使用Jackson 2.1.4将POJO序列化为JSON,但我想忽略序列化的特定字段.我使用了瞬态,但它仍在序列化该元素.

public class TestElement {

    int x;

    private transient String y;

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public String getY() {
        return y;
    }

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

我正在序列化如下:

public static void main(String[] args) throws JsonProcessingException {
    TestElement testElement = new TestElement();
    testElement.setX(10);
    testElement.setY("adasd");
    ObjectMapper om = new ObjectMapper();
    String serialized = om.writeValueAsString(testElement);
    System.err.println(serialized);
}
Run Code Online (Sandbox Code Playgroud)

请不要建议,@JsonIgnore因为我不想将我的模型与杰克逊特定注释联系起来.可以仅使用瞬态完成吗?objectmapper上是否有用于可见性设置的API?

json transient jackson

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

如何创建tmp文件名而不创建文件

我使用SWT在Java中编写应用程序.我想创建唯一的文件名.但我不想在硬盘上创建它.附加功能:我想在指定文件夹中创建唯一的文件名.

public String getUniqueFileName(String directory, String extension) {
        //create unique file name   
}
Run Code Online (Sandbox Code Playgroud)

java file-io file

28
推荐指数
3
解决办法
4万
查看次数

如何从Java中的另一个线程更新SWT GUI

我正在使用SWT编写桌面应用程序.从另一个线程更新GUI控件的最简单方法是什么?

java user-interface swt multithreading

13
推荐指数
2
解决办法
3万
查看次数

早于一个月前的日期

如何检查给定日期是否早于一个月前?什么是最快的算法?我必须考虑到不同的月份有不同的天数.

java date

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

RichTextBox中的摄氏符号

我使用C#和.NET2.0编写Windows应用程序.在RichTextBox中,我想显示Celsius符号.怎么做?可能吗?

c# windows richtextbox .net-2.0

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

如何将选择结果存储到Oracle过程中的变量中

我写了一个简单的程序.我尝试将选择结果存储在变量中.我使用"SELECT INTO"查询,但我不能这样做.

例:

DECLARE
     v_employeeRecord  employee%ROWTYPE;
BEGIN
 SELECT * INTO v_employeeRecord
      FROM Employee WHERE Salary > 10;
END;
Run Code Online (Sandbox Code Playgroud)

oracle stored-procedures select-into

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

哪种设计模式更适合与控制器/服务/ DAO一起使用

在我的职业生涯中,我看到了几个不同的设计,如何使用DAO,服务,控制器层.我想问一下两个相似但差别不大的两个.第一种设计在层之间产生可见屏障.控制器始终使用服务而仅使用服务.服务可以使用其他服务或DAO.控制器不能直接使用任何DAO.这个设计很清楚,但对我来说有很大的不足:我们总是要为DAO中的每个方法创建服务方法.但在很多情况下,Service方法只调用DAO方法和其他任何东西.

例如:我们有 DAO

class UserDao {
    public List<User> findByName(String name) { ... }
    public List<User> findByLastName(String name) { ... }
    public List<User> findOlderThan(int age) { ... }

    ......
}
Run Code Online (Sandbox Code Playgroud)

控制器使用上述所有方法.在我们的案例中我们应该做些什么?创建类似的方法Service:

class UserService {
    public List<User> findByName(String name) { return userDao.findByName(name); }
    public List<User> findByLastName(String name) { return userDao.findByLastName(name); }
    public List<User> findOlderThan(int age) { return userDao.findOlderThan(age); }

    ......
}
Run Code Online (Sandbox Code Playgroud)

对我来说,这是只读方法的额外不必要的层.

在第二种设计中,我们没有遇到任何问题,因为我们可以在控制器中直接使用DAO.在这个设计中我们有一个规则:如果我们想从"数据存储"中检索数据,我们可以在任何层使用DAO,如果我们想在"数据存储"中进行一些更改,我们必须使用服务方法.

伙计们,对于这些设计你怎么看?哪个更好?我应该在我的项目中使用哪些应该被遗忘?你能和我分享你在这方面的经验吗?

oop model-view-controller design-patterns

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