如何使用eclipse将Java常量重构为枚举?
我发现eclipse中没有内置功能:http://help.eclipse.org/juno/index.jsp?topic =%2Forg.eclipse.jdt.doc.user%2Freference%2Fref - menu - refactor.htm
我找到了一个插件:http: //code.google.com/p/constants-to-enum-eclipse-plugin/.我想知道插件是否可行,或者是否有人使用更好的方法.
我总是可以自己创建一个enum类来剪切和粘贴常量,这在2012年是乏味的.请不要指向另一个IDE,我太老太改变坏习惯;-)
我已经完成了我正在处理的大部分应用程序,现在我觉得我陷入了一个变化.我有这样做的想法,但问题我真的无法实现它.我希望我能在这里找到一些帮助.
我有这个复杂的代码.它需要两个日期并检查car_reservation数据透视表是否重叠.
$table->integer('car_id')->unsigned();
$table->foreign('car_id')->references('id')->on('cars');
$table->integer('reservation_id')->unsigned();
$table->foreign('reservation_id')->references('id') >on('reservations');
Run Code Online (Sandbox Code Playgroud)
关系在预订模型中:
public function cars()
{
return $this->belongsTo('App\Models\Access\Car','car_reservation');
}
Run Code Online (Sandbox Code Playgroud)
这是我正在尝试调试并使其工作的代码:
public function get(Request $request)
{
$appointments = Reservation::with('cars')->get();
foreach ($appointments as $appointment) {
$from = Carbon::parse($request->from);
$to = Carbon::parse($request->to);
$eventStart = Carbon::instance(new DateTime($appointment['dt_start']));
$eventEnd = Carbon::instance(new DateTime($appointment['dt_end']))->subSecond(1);
// A spot is taken if either the from or to date is between eventStart and eventEnd
// or if the evenStart and eventEnd are between the from and to date.
if ($from->between($eventStart, $eventEnd) ||
$to->between($eventStart, $eventEnd) …Run Code Online (Sandbox Code Playgroud) 我正在嘲笑一个不使用泛型的接口,但确实将一个Class类型作为参数.
public Object query(Class c, Filter f)
{....}
Run Code Online (Sandbox Code Playgroud)
我的实现中有一种方法可以c用作泛型的参数吗?
例如.
return new ArrayList<c>();
Run Code Online (Sandbox Code Playgroud)
显然我可以做一个switch如果我知道一组值c,但这是一个非常难看的黑客,我不想做.
谢谢.
我确信我忽略了一些显而易见的事情
以下静态查询工作正常
hqlQuery = "select user from User as user where user.id = 'userid' ";
Run Code Online (Sandbox Code Playgroud)
但是当我参数化查询时
hqlQuery = "select user from User as user where user.id = :me ";
Query query = session.createQuery(hqlQuery);
Run Code Online (Sandbox Code Playgroud)
我通过构建查询得到了一个讨厌的堆栈转储.我在俯瞰什么?
Exception in thread "main" java.lang.NoSuchMethodError: antlr.collections.AST.getLine()I
at org.hibernate.hql.ast.HqlSqlWalker.generateNamedParameter(HqlSqlWalker.java:940)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.parameter(HqlSqlBaseWalker.java:4997)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1413)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4471)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:3947)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2047)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:831)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:617)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:301)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:244)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:254)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:185)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:124)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1770)
Run Code Online (Sandbox Code Playgroud) 我想在perl中设置LIST_SEPARATOR,但我得到的就是这个警告:
Name "main::LIST_SEPARATOR" used only once: possible typo at ldapflip.pl line 7.
Run Code Online (Sandbox Code Playgroud)
这是我的计划:
#!/usr/bin/perl -w
@vals;
push @vals, "a";
push @vals, "b";
$LIST_SEPARATOR='|';
print "@vals\n";
Run Code Online (Sandbox Code Playgroud)
我确信我错过了一些明显的东西,但我没有看到它.
谢谢
我有一个包含集合的类.如果集合的内容相等,则类的两个实例是相等的.在构建数据结构时,我将类存储在HashSet中,并且集合的内容也会发生变化.这些更改会导致哈希码值发生更改.这似乎会导致我的数据在Set中丢失的副作用.从哈希码计算中删除集合可以解决问题,但违反了规则,其中equals中的所有字段都应该在哈希码中使用.
在这种情况下,您将如何实现哈希码?
public class LeveZeroHolder
{
private final Set<LevelOneHolder> orgGroups = new HashSet<LevelOneHolder>();
private final String name;
public LeveZeroHolder(String name, LevelOneHolder og)
{
this.name = name;
orgGroups.add(og);
og.setFA(this);
}
@Override
public boolean equals(Object obj)
{
if (this == obj)
return true;
if (obj == null || obj.getClass () != getClass ())
return false;
LeveZeroHolder hobj = (LeveZeroHolder)obj;
return getOrgGroups().equals(hobj.getOrgGroups()) && getName().equals(hobj.getName());
}
@Override
public int hashCode()
{
int rs = 17;
rs = rs * 37 + ((getName() == null) …Run Code Online (Sandbox Code Playgroud) 我正在运行perl,为sun4-solaris-64int构建的v5.6.1
我在数组上调用print:
print "@vals\n";
Run Code Online (Sandbox Code Playgroud)
输出看起来像:
HASH(0x229a4) uid cn attuid
Run Code Online (Sandbox Code Playgroud)
或者另一个例子:
@foo = {};
push(@foo, "c");
print "@foo I am done now\n";
Run Code Online (Sandbox Code Playgroud)
输出:
HASH(0x2ece0) c I am done now
Run Code Online (Sandbox Code Playgroud)
HASH(0x2ece0)来自哪里?
Web服务器将其SSL证书更新为新的verisign签名证书,我的Java应用程序无法再连接.
我在/ usr/java/jre/lib/security中使用带有日期的java 5和2006年11月的cert文件
我明白了
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:150)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1518)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:174)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:168)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:848)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:106)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:495)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:433)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:818)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1030)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1057)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1041)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:402)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:170)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:133)
Run Code Online (Sandbox Code Playgroud)
如何安装服务器提供的新密钥?
从我得到的不同的java实例
Certificate chain received from eservices3.bus.att.com - 135.38.253.93 was not trusted causing SSL handshake failure.
Run Code Online (Sandbox Code Playgroud)
我认为它来自同一根问题.
更新在远程服务器更新之前,这适用于我们的标准Java安装.我没有必要安装任何证书,以便上次使用它.
我正在将一个KodoJDO应用程序移植到Hibernate.我有一个查询,遍历db中的4个表,以及java代码中的3个对象.
在英语中,查询是查找在系统X中具有权利的用户.
我在用户对象上调用的JDOQL where子句是entitlements.contains(ent)&&(upper(ent.system.id)='EVPN')
执行查询的一些sql是:
select unique(u.id)
from USER u, USERENTITLEMENT ue, ENTITLEMENT e, SYSTEM s
where u.id = ue.userid
and ue.entitlementid = e.id
and e.systemid = s.id
and s.id = 'evpn'
Run Code Online (Sandbox Code Playgroud)
我对HQL的最佳猜测给了我一个例外
org.hibernate.hql.ast.QuerySyntaxException: unexpected AST node: ( [select user from com.ebig.entity.User as user, com.ebig.entity.Entitlement as ent, com.ebig.entity.System as sys where entitlements.contains(ent) and ent.system = sys and sys.id = 'evpn']
Run Code Online (Sandbox Code Playgroud)
db的结构如下:
User
id
UserEntitlement
userid
entitlementid
Entitlement
id
systemid
System
id
Run Code Online (Sandbox Code Playgroud)
java代码结构如下:
class User
{
String id;
Set<Entitlement> entitlements;
} …Run Code Online (Sandbox Code Playgroud)