实际上,问题应该是
Creating an array of generic anything.
Run Code Online (Sandbox Code Playgroud)
为什么编译器不能处理它呢?
以下内容将被标记为错误 - 无法创建通用数组.
List<MyDTO>[] dtoLists = {new ArrayList<MyDTO>(), anExistingDtoList};
Run Code Online (Sandbox Code Playgroud)
要克服这一点,我需要
List<MyDTO>[] dtoLists = (List<MyDTO>[])Array.newInstance(ArrayList.class, 2);
dtoLists[0] = new ArrayList<MyDTO>();
dtoLists[1] = anExistingDtoList;
Run Code Online (Sandbox Code Playgroud)
那么,为什么编译器不能将第一种情况转换为第二种情况呢?
我确实认识到泛型是编译时确定的而不是运行时确定的,而数组是运行时确定的,因此需要确定类型才能创建数组.
编译器设计人员会遇到哪些技术/逻辑障碍会妨碍他们实现这一目标?
这个问题纯粹是哲学上的,关于语言正交性吗?如果是这样,这种行为将如何违反语言正交性?
这是一个复杂性的问题吗?解释复杂性.
我希望我的问题的答案能让我更好地了解java编译器在涉及泛型时的行为.
旁注:来吧,停止触发快乐.答案通用列表数组 不回答我的问题.为什么编译器不能自发地执行转换?
好的,这将是我第三次击败一匹垂死的马.
但是,这个问题与我之前的两个关于闭包/代表的问题不同,后者询问代表的计划以及闭包的预计规范和实现是什么.
这个问题是关于 - 当我们可以简单地从我们心爱的友好邻居 - 微软窃取委托锁,股票和桶的整个概念时,为什么Java社区在努力定义3种不同类型的闭包.
有两个非技术性的结论我很想进入:
好的,除了以上两种可能性,
Q1..NET风格的代理中是否存在三种(或更多种)封闭形式会解决的弱点或不足之处?
Q2.我在Java和C#之间转换时问这个问题,它让我感到兴奋的是C#代理完全符合我的需要.是否有可在C#代理中当前不可用的闭包中实现的功能?如果是这样,他们是什么因为我看不到我需要什么比C#代表给我足够的东西?
Q3.我知道在java中实现闭包/委托的一个问题是减少语言的正交性,其中不止一种方式暴露于执行特定任务.为了确保java保持其正交性水平,是否值得花费卷积和花费时间来避免代表?在关系设计中,我们知道通过经常充分满足第二范式而破坏正交性是可取的.为简单起见,为什么java不能减少正交性和OO-ness?
Q4.JVM的体系结构在技术上受限于实现.NET样式的委托.如果这个原因是:(虚拟语气强调祈)属实,那么为什么不能三个闭包方案是一个简单的委托关键字或注释背后隐藏的:如果我们不喜欢使用@Delegate,我们可以使用@method.我看不出委托语句格式如何比三个闭包提案更复杂.
我建立
enum Restrictions{
none,
enumeration,
fractionDigits,
length,
maxExclusive,
maxInclusive,
maxLength,
minExclusive,
minInclusive,
minLength,
pattern,
totalDigits,
whiteSpace;
public Restrictions setValue(int value){
this.value = value;
return this;
}
public int value;
}
Run Code Online (Sandbox Code Playgroud)
所以我可以愉快地做这样的事情,这是完全合法的语法.
Restrictions r1 =
Restrictions.maxLength.setValue(64);
Run Code Online (Sandbox Code Playgroud)
原因是,我使用枚举来限制可以使用的限制类型,并且能够为该限制分配值.
但是,我的实际动机是在@annotation中使用该限制.
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD})
public @interface Presentable {
Restrictions[] restrictions() default Restrictions.none;
}
Run Code Online (Sandbox Code Playgroud)
所以,我打算这样做:
@Presentable(restrictions=Restrictions.maxLength.setValue(64))
public String userName;
Run Code Online (Sandbox Code Playgroud)
对此,编译器呱呱叫
The value for annotation enum attribute must be an enum constant expression.
Run Code Online (Sandbox Code Playgroud)
有没有办法完成我想要完成的任务
我认为JPA很方便(更不用说标准化,因为我们曾经让每个程序员用jdbc连接做他/她自己的事情).
我想用jpa和C#这样的东西到mysql和sqlserver.
我想知道maven存储库结构的规范.
我知道我可以使用archiva或nexus来创建存储库.我对这些信息不感兴趣.
我已经尝试搜索apache的maven网站并使用短语"maven artifact repository structure specs"进行搜索,我主要得到maven客户端上预期的开发目录结构.
我希望有人在这里解释一下这个结构,或者指向一个全面的单个文档(即一个不能通过让我遵循永无止境的链接来解释目录结构的文档),例如,
Sun的Java gurunaths(nathaनाथ= sanskrit for deity-master-protector)应该屈服于接受代表的必要性并将其草拟为Java规范.
在C#中,我可以将一个方法作为委托作为委托引用,而不需要因为我需要在Java中传递一个方法来创建一个类.
是什么原因导致它不必要(除了引用笨拙的使用一个全新的类为此目的)或不利的是Sun决定不用Java?创建类或匿名实现接口有哪些优势超过代理?我什么都想不到,可以吗?
我想找到以下类的方法"get"的所有调用者:
package com.zzz.zzz.zzz.services;
public final class EMF {
private static final EntityManagerFactory emfInstance =
Persistence.createEntityManagerFactory("obamaCareIsGood4U");
private EMF() {}
public static EntityManagerFactory get() {
return emfInstance;
}
}
Run Code Online (Sandbox Code Playgroud)
所以我高举文本"get"并右键单击References - project.但是它返回了对每个名为"get"的方法的引用,而不仅仅是对com.zzz.zzz.zzz.services.EMF.get()的引用.
这是一个日食错误吗?如何让Eclipse仅显示对com.zzz.zzz.zzz.services.EMF.get()的引用?
Eclipse Platform Version:
4.2.0.v20120608-135145-9JF7BHV8FyMteji0Oi_ePMz0xuZ8TVo7lV0z0ecb
Build id:
I20120608-1400,
Spring Tool Suite Version: 3.0.0.M3 Build Id: 201207050802
Run Code Online (Sandbox Code Playgroud)
参考搜索输出:
com.google.common.base - guava-12.0.jar - C:\Users\SofiaVergara\.m2\repository\com\google\guava\guava\12.0 - PatientCare
com.google.common.base - guava-gwt-12.0.jar - C:\Users\SofiaVergara\.m2\repository\com\google\guava\guava-gwt\12.0 - PatientCare
com.google.gwt.junit.server - gwt-user-2.4.0.jar - C:\Users\SofiaVergara\.m2\repository\com\google\gwt\gwt-user\2.4.0 - PatientCare
com.google.gwt.requestfactory.server - gwt-servlet-2.2.0.jar - C:\Users\SofiaVergara\.m2\repository\com\google\gwt\gwt-servlet\2.2.0 - PatientCare
com.google.gwt.resources.rg - gwt-user-2.4.0.jar - C:\Users\SofiaVergara\.m2\repository\com\google\gwt\gwt-user\2.4.0 …Run Code Online (Sandbox Code Playgroud) Java闭包的当前规范是什么?
在提议的Java闭包规范中,我们能够创建一个数组或闭包集合吗?
如果是这样,这种语法是否可行?
{int x, int y => boolean b}[] comparisonSwitch = {
{int i, int j => return i>j},
{int i, int j => return j<i},
{int i, int j => return j==i}
}
boolean compare(int acase, int a, int b){
return comparisonSwitch[acase].invoke(a,b);
}
Run Code Online (Sandbox Code Playgroud)普通方法会被视为非匿名闭包吗?
那么以下语法是否可行?
public class Asdf
{
public boolean gt(int x, int y){
return x>y;
}
public boolean lt(int x, int y){
return x<y;
}
public boolean eq(int x, int y){
return x==y;
}
{int x, …Run Code Online (Sandbox Code Playgroud)使用一个与另一个相比有什么区别和优势:
Accept: application/json;charset=utf-8
Run Code Online (Sandbox Code Playgroud)
与:
Accept: application/json
Accept-Charset: utf-8
Run Code Online (Sandbox Code Playgroud)
第一种形式是否符合rfc 2616?
注意:可以是json或xml等.
假设我有以下persistence.xml,连接url,用户和密码都是硬编码的.
以下是Hibernate 3.2.对于Hibernate 3.5 ++,我们必须将"hibernate.connection"更改为"javax.persistence".但是,无论文字"hibernate.connection"或"javax.persistence"如何,我都要问这个问题.
<persistence-unit name="obamacare" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="hibernate.archive.autodetection" value="class, hbm"/>
<property name="hibernate.connection.driver_class" value="oracle.jdbc.driver.OracleDriver"/>
<property name="hibernate.connection.url" value="blah blah blah"/>
<property name="hibernate.connection.username" value="careuser"/>
<property name="hibernate.connection.password" value="carepass"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect"/>
<property name="hibernate.show_sql" value="true"/>
</properties>
</persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)
但是,我们需要动态设置网址,用户和密码.有一个提议的身份验证服务器,它提供URL,用户和密码.因此,我们不需要单独配置使用某种形式的jdbc,hibernate或JPA的无数webapp.除了不想在可见文本文件上存储/管理密码的安全问题.
就JPA而言,如何动态设置这些JPA属性?我正在寻求两套答案:
对于独立于JPA供应商的解决方案(toplink,eclipselink,hibernate等) - 是否有任何JPA功能可以让我动态设置这三个属性?
如果我被允许完全依赖Hibernate,除了可能的JPA唯一途径之外,有没有办法实现这一点而不涉及Spring框架(这似乎是一个巨大的怪物,触手遍布各处)?
如果您还希望在JNDI上投入两美分/ quids/rupe以及如何使用它来替换persistence.xml属性的功能,我会很高兴.但是,这不是问题的优先事项.
java ×7
c# ×3
.net ×2
closures ×2
delegates ×2
jpa ×2
annotations ×1
eclipse ×1
eclipse-jdt ×1
enums ×1
generics ×1
hibernate ×1
http ×1
http-headers ×1
jpa-2.0 ×1
maven-2 ×1
repository ×1
rest ×1
rfc2616 ×1