小编mem*_*und的帖子

如何通过泛型类型实例化?

是否可以实例化在抽象类中作为泛型类型参数提供的类?

例:

public MyClass {
    public MyClass(String test) {

    }
}
Run Code Online (Sandbox Code Playgroud)

是否可以在另一个抽象类中实例化这个类?

public abstract class AbstractClass<T extends MyClass> {
    public AbstractClass() {
        T t = new T("test"); //Cannot instantiate the type T
    }
}
Run Code Online (Sandbox Code Playgroud)

java generics

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

如何在Spring-Batch中使用ItemReader跳过行?

我有一个自定义项目阅读器,可将行从文本文件转换为我的实体:

public class EntityItemReader extends AbstractItemStreamItemReader<MyEntity> {
    @Override
    public MyEntity read() {
       String line = delegate.read();
       //analyze line and skip by condition
       //line.split
       //create entity with line values
    }
}
Run Code Online (Sandbox Code Playgroud)

这类似于FlatFileItemReader

然后,读取的内容MyEntity将由保留到数据库JdbcItemReader

问题:有时我的行包含应跳过的值。

但是,当我只是return nullread()阅读器的方法内部时,不仅会跳过此项目,而且会完全终止阅读,并且将跳过所有其他行。因为null元素是所有弹簧读取器的“信号”,所以要读取的文件已完成。

因此:如果无法返回null,我该怎么做才能按条件跳过阅读器中的特定行?因为根据读者的本性,我被迫在此处返回一个对象。

java spring spring-batch

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

实用程序类总是有一个固定长度的字符串?

根据我的要求,可能已经有某种apache或guava实用程序类了:

我想始终创建相同长度的字符串.丢失的字符应该用固定字符向左或向右填充.就像是:

Utils.filledString(teststring, " ", 5); //would ensure the teststring is always 5 chars long, and if not append whitespace to the right
Utils.filledString(teststring, "x", -5); //same as above, but fill the 5 chars left with an x
Run Code Online (Sandbox Code Playgroud)

你明白了,可能它已经存在,但我找不到正确的关键字来找到它.

java string

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

如何为PreparedStatements重写SQL语句?

我想将folling的SQL语句重写为动态PreparedStatementjava:

UPDATE table SET field='C' WHERE id=3;
INSERT INTO table (id, field)
       SELECT 3, 'C'
       WHERE NOT EXISTS (SELECT 1 FROM table WHERE id=3);
Run Code Online (Sandbox Code Playgroud)

特别是我不知道如何将SELECT 3, 'C'行重写为动态语句.

UPDATE table SET name=:name WHERE id=:id
INSERT INTO table (id, name)
       SELECT 3, 'C'  <-- how could I rewrite these values to take the dynamic values from PreparedStatement?
       WHERE NOT EXISTS (SELECT 1 FROM table WHERE id=3);
Run Code Online (Sandbox Code Playgroud)

我的对象,类似:

@Entity
public class MyEntity {
   long id, String name;
}
Run Code Online (Sandbox Code Playgroud)

java sql postgresql jdbc

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

如何使用beanIO解析固定长度的记录?

我正在使用beanio解析固定长度的内容(单个字符串行).我想使用基于注释的配置,但它不起作用.

以下代码可能有什么问题?

        StreamBuilder builder = new StreamBuilder("s1").addRecord(MyRecord.class);
        StreamFactory factory = StreamFactory.newInstance();
        factory.define(builder);

        Unmarshaller unmarshaller = factory.createUnmarshaller("s1");
        unmarshaller.unmarshal("123ASD");

@Record(minOccurs = 1, maxOccurs = 1)
public class MyRecord {

    @Field(at = 1, length = 3, minOccurs = 1)
    private String number;

    @Field(at = 4, length = 3, minOccurs = 1)   
    private String text;
}


org.beanio.InvalidRecordException: Invalid 'myRecord' record
 ==> Invalid 'number':  Expected minimum 1 occurrences
 ==> Invalid 'text':  Expected minimum 1 occurrences
    at org.beanio.internal.parser.UnmarshallingContext.validate(UnmarshallingContext.java:200)
    at org.beanio.internal.parser.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:204)
    at org.beanio.internal.parser.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:89)
Run Code Online (Sandbox Code Playgroud)

java bean-io

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

如何将数字转换为负数?

Math.abs()将任何数字转换为正数.还有一个函数(我可能会丢失)支持相反的方式:将任何数字(无论符号)转换为负数?

我唯一能想到的是: Math.abs(number) * -1

java

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

字符串连接的三元运算符导致部分内容丢失?

Boolean isValid = true;
String message = "prefix" + isValid != null ? " midfix " : "suffix";
System.out.println(message);
Run Code Online (Sandbox Code Playgroud)

您认为这是什么结果?我期待prefix midfix.但实际上结果是:midfix!

这是java库本身的错误(1.7)吗?我应该为此报告错误吗?或者这是否按预期工作,我在滥用它?

可以使用以下方法"修复":

String message = "prefix" + (isValid != null ? " midfix " : "suffix"); 但无论如何不应该没有这个问题?

java

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

在提取结果集时是否应该使用新的流lambdas?

从现有列表中提取结果集的公共代码可以如下:

List<Node> results;
for (Node node : rsp.getNodes()) {
    if (node.isValid() && node.getType == NodeType.TEST &&...) {
        if (results == null) {
            results = new ArrayList<>();
        }
        results.add(node);
    }
}
Run Code Online (Sandbox Code Playgroud)

现在使用java 8和lambdas,因为建议总是使用流来支持?

rsp.getNodes().stream.filter(node -> {
    return node.isValid() && node.getType == NodeType.TEST &&...;
}).forEach(node -> results.add(node));
Run Code Online (Sandbox Code Playgroud)

对我来说,最近从java8开始,这看起来并不比现在的java7代码更清晰.无论如何你有更多的经验,并且可以肯定地推荐我使用这些类型的"快捷方式"与lambdas,而不是旧的foreach风格?

我知道最后它可能是一个品味问题.如果是的话,你会觉得我的例子是一个完全可行的情况下,可以始终与流和lambda表达式作为一个很好的做法(我有意识地不使用术语"最佳实践")所取代?

java lambda java-8 java-stream

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

如何为REST json数据创建基本的angularjs页面?

我正在尝试创建一个显示检索数据的基本网页http://rest-service.guides.spring.io/greeting.

json输出是:

{"id":2273,"content":"Hello, World!"}
Run Code Online (Sandbox Code Playgroud)

我正在使用以下html页面:

<body ng-app="hello">
    <div class="container">
        <h1>Greeting</h1>
        <div ng-controller="home" ng-cloak class="ng-cloak">
            <p>The Id is: {{greeting.id}}</p>
            <p>The content is: {{greeting.content}}</p>
        </div>
    </div>
    <script src="js/angular-bootstrap.js" type="text/javascript"></script>
    <script src="js/hello.js"></script>
</body>
Run Code Online (Sandbox Code Playgroud)

和hello.js:

var myApp = angular.module('hello', []);

myApp.controller('home', ['$scope', function($scope) {
    $scope.greeting = {};

    $http.get('http://rest-service.guides.spring.io/greeting')
        .success(function(data, status, headers, config) {
            $scope.greeting = data;
        });
}]);
Run Code Online (Sandbox Code Playgroud)

结果:占位符greeting.id/content未解析.这可能有什么问题?

javascript rest json angularjs

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

如何在多个div元素上使用ng-repeat?

我想实现以下(不起作用):

<div ng-repeat="product in products">{{product.headline}}</div>
<div>{{product.text}}</div>
Run Code Online (Sandbox Code Playgroud)

我只是首先看到所有标题,然后是彼此之下的所有文本.如何在额外的div元素上再次引用产品?

angularjs

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