草庐IT

vector-class-library

全部标签

java - guava-libraries : Is Objects. hashCode(Object[]) 碰撞安全吗?

在查看覆盖hashCode()的不同选项时,我被定向到GoogleGuava库中的Objects.hashCode(Object[])(javadoc).javadoc声明它委托(delegate)给Arrays.hashCode(Object[])。在许多不同的对象类型中使用此方法是否安全?这是否容易发生哈希冲突,或者这不太可能仅仅是因为容器通常只包含一种类型的对象?作为一个简单的例子,考虑以下类,publicclassStudent{privatefinalStringname;publicStudent(Stringname){this.name=name;}@Overridep

java - 非法访问错误 :class <classname> cannot access its superinterface <interfacename>

我有类Assembly实现IAssembly。启动应用程序时出现以下错误Causedby:java.lang.IllegalAccessError:classcannotaccessitssuperinterfaceatjava.lang.ClassLoader.defineClass1(NativeMethod)汇编代码classpackage.AssemblyimplementsIAssembly{}组装interfaceIAssembly{//note-thisisnotpublic,sousesdefaultprotected}Assembly和IAssembly存在于两个不同

Java:声明具有两个相关泛型类型的映射 (<T> Map<Class<? extends ClassA<T>>,Class<? extends ClassB<T>>>)

是否可以声明一个映射,将特定子类的键映射到特定子类的值,但确保两个类共享相同的类型参数?对于背景:ClassA和ClassB都实现了公共(public)资源的行为publicabstractclassClassA{publicabstractTgetResource();}publicabstractclassclassB{publicabstractvoidconsoumeResource(Tresource);}我想从ClassA和ClassB的实现进行映射,并确保只有“兼容”对可以放在一个条目中。 最佳答案 另一种方法是提供您

java - int.class.isInstance(Object) 是矛盾的吗?

这是一个例子:publicbooleancheck(Classclazz,Objecto){returnclazz.isInstance(o);}check(int.class,7);//returnsfalse自isInstance接受Object,它不适用于int,因为int是原始类型并自动装箱为Integer.那么是否有可能编写一个通用的检查方法?或者我应该确保clazz的类型是Class? 最佳答案 并不是所有的Class对象都代表类/引用类型;还有Class对象表示原始类型。这很有用,因为在对字段和方法使用反射时,您经常需

java - Sonar 标志 "Bad practice": Usage of GetResource in XYZ may be unsafe if class is extended

Sonar在我们的Java项目中指示这个错误。欢迎任何有关安全编程的建议!URLurl=getClass().getResource("/myWonderfulResource.txt");if(url==null){thrownewIllegalStateException("Filenotfound:/myWonderfulResource.txt");} 最佳答案 将类设为final,使其无法扩展。警告是为了防止扩展类(可能)尝试使用不存在的资源。 关于java-Sonar标志"B

java - 为什么父类(super class)的实例可以放入子类的数组中?

假设我们有2个类:classX{}classYextendsX{}在main函数中创建一个数组:Y[]yArr=newY[3]//createdY'sclassobjectsarrayX[]xArr=yArr;xArr[0]=newX()//VALID.WHY?怎么可能??因为xArr指的是Y[]对象,据我所知,它不能创建X对象。 最佳答案 Java编译器允许这样做,因为在Java中数组是协变的。也就是说,可以说:Superclass[]arr=newSubclass[3];这允许诸如您的xArr[0]=newX();之类的代码进行

Java 8 矩阵 * vector 乘法

我想知道在Java8中是否有更简洁的方法来使用流执行以下操作:publicstaticdouble[]multiply(double[][]matrix,double[]vector){introws=matrix.length;intcolumns=matrix[0].length;double[]result=newdouble[rows];for(introw=0;row进行编辑。我收到了一个很好的答案,但是性能比旧实现慢了大约10倍,所以我在这里添加测试代码以防有人想调查它:@Testpublicvoidprofile(){longstart;longstop;inttenmi

java - 在它的抽象父类(super class)中使用子类的泛型类型?

在我的代码中有以下抽象父类(superclass)publicabstractclassAbstractClass{...}还有一些子类比如publicclassChildClassAextendsAbstractClass{...}publicclassChildClassBextendsAbstractClass{...}我正在寻找一种优雅的方式来以通用方式在抽象类中使用子类的通用类型(GenericTypeA、GenericTypeB等)。为了解决这个问题我目前定义了方法protectedabstractClassgetGenericTypeClass();在我的抽象类中并实现了

java - 何时使用 hibernate.connection.provider_class

什么时候应该使用hibernate.connection.provider_class?我有点混淆它和“hibernate.connection.diver_class”。provider_class可能对连接池有用还有其他我们可以使用provider_class的目的吗? 最佳答案 连接提供程序的另一个用途是随着时间的推移维护session,对于mysql+hibernate的组合尤其如此。如果您没有正确配置的连接提供程序来处理来自mysql的超时,那么如果您有一段时间不活动,您可能迟早会断开与数据库的连接。

java - 带有 $LD_LIBRARY_PATH 的 Eclipse

我在目录/usr/local/lib/中有一些使用JNI构建的库文件。如果我从luncher启动Eclipse,Eclipse永远不会选择该路径,因此我需要为运行配置指定-Djava.library.path。但是如果我从命令行启动Eclipse。看起来工作正常。有谁知道为什么它会这样,以及如何将它配置为从luncher知道/usr/local/lib/路径。谢谢。我在Ubuntu操作系统上使用EclipseSDK版本:3.6.2。 最佳答案 这可能是因为您的shell在其中一个启动脚本中执行了exportLD_LIBRARY_PA