我有一个简单的案例类定义如下:
case class Foo(f1 : String, f2:String)
我想使用反射查询所有声明的字段的Foo类型,获取这些字段的类型,然后获取与这些类型相关联的方法。因此,在本例中,它将获得字段f1和f2,然后对这些字段确定它们的类型,在本例中是String,然后获取与String类型关联的所有方法。
我尝试了以下几点:
scala> import reflect.runtime.{universe => ru}
import reflect.runtime.{universe=>ru}
scala> case class Fo
我只需要得到案例类的字段名。我对它的价值不感兴趣。我以为getClass.getDeclaredFields.map(_.getName)会返回一个字段名列表。
scala> case class User(id: Int, name: String)
defined class User
scala> User.getClass.getDeclaredFields
res14: Array[java.lang.reflect.Field] = Array(public static final User$ User$.MODULE$)
scala> User.getCl
我试图获取引用自定义类的属性的类型,我只知道它的类型为Object
我的代码:
class Edge[N <% Node](var from : N, var to : N) {
def toXml(c: Class): xml.Elem = {
<edge>{
for(field: Field <- classOf[this.type].getDeclaredFields)
yield <field name={field.name} tpe={field.tpe.toString()}>{ this.getCla
有没有一种很好的方法可以转换一个Scala case class实例,例如
case class MyClass(param1: String, param2: String)
val x = MyClass("hello", "world")
转换成某种类型的映射,例如
getCCParams(x) returns "param1" -> "hello", "param2" -> "world"
它适用于任何case类,而不仅仅是预定义的类。我发现您可以通过编写一个查询底层Produc
我一直在Scala中试验清单之类的东西,我很难找到一种方法来在通过getDeclaredFields方法访问时使用对象的字段……
下面是一个示例:
class Woah(val x: String, val y: String)
val w = new Woah("w_x", "w_y")
classOf[Woah].getDeclaredFields foreach (field => println(field.get(w))
我尝试了许多变体,例如在类Woah中创建一个方法,该方法执行与第三行代码相同的操作,但将field.get(w)替换为fie
因此,我是一个使用scala 2.11.7的新手,我必须获取字段的值,但我得到的是输出:
java.lang.IllegalAccessException: Class $anonfun$1 can not access a member of class Class with modifiers "private"
我试图设置字段的可访问性,但isAccessible方法一直返回false。这是我尝试过的:
var o: Class=new Class();
o.getClass.getDeclaredFields map(x=>x.setAccessible(true
我需要在一个验证注册器对象中注册字段,用于以后的验证,就像这样;
public class ValidationRegisterer{
public void register(String spElPath, Validator validator){
//puts spElPath and the related validator into a collection...
}
}
假设我有一个A类;
public class A {
private String name;
public String getName(){
以下是以下问题的后续内容:
我正在试图找到一种简单的方法来提供快速自定义序列化(比如(String, Object)的一个元组列表,它可以在生产中转换为db行,也可以在单元测试中转换为内存中的映射)到Scala中的一系列案例类,而且保持类中字段的缓存列表似乎是一种很有希望的方法。然而,我不确定是否有最干净的方法来做到这一点。我知道我可以做以下事情:
case class Playlist(
val id: Option[Long],
val title: Option[String],
val album: Option[String],
val artist: Option[
因此,我在Java中的代码类似于:
private List<SomeType>variable;
// ....variable is instantiated as so ...
variable = new ArrayList<SomeType>();
// there's also a getter
public List<SomeType> getVariable() { /* code */ }
我想要做的是,以编程方式弄清楚variable是SomeType的集合。我读过,我可以从getVariable()方法中确定这一点,但是有没
在Java中,当跨多个线程(通常)使用一个对象时,最好将字段设为final。例如,
public class ShareMe {
private final MyObject obj;
public ShareMe(MyObject obj) {
this.obj = obj;
}
}
在这种情况下,obj的可见性在多个线程中是一致的(让我们假设obj也有所有的final字段),因为它是使用final关键字安全构造的。
在scala中,val似乎不会编译成最终的引用,而是scala中阻止您重新赋值变量()的语义。如果scala构造函数变量没有定义为fin
这种情况似乎很容易理解,但现在我感到困惑:
scala> class B(i:Int)
defined class B
scala> classOf[B].getDeclaredFields
res12: Array[java.lang.reflect.Field] = Array()
请注意:
scala> class C(i:Int){
| val j = 3
| val k = -1
| }
defined class C
scala> classOf[C].getDeclaredFields
res15: Array[java.
有人能帮个忙吗? 我有课。这只是一个演示,实际上我有更多的字段。 public class ParentData
{
private String field2 = "";
}
public class Data extends ParentData
{
private String field1 = "";
} getAllFieldsofParentAndChildClass方法的实现 public Field[] getAllFieldsofParentAndChildClass(Class<?> clazz)
{
Fie
在Scala中,是否可以使用反射来访问内部类的外部类?例如:
class A {
val inner = new {
println(getClass.getConstructors.toList)
println(getClass.getDeclaredFields.toList)
}
}
scala> val a = new A
List(public $line11.$read$$iw$$iw$A$$anon$1($line11.$read$$iw$$iw$A))
List()
a: A = A@45f76fc7
我认为Scala编译器
我对java有点陌生,我想知道是否有可能检索用特定名称定义的静态变量的数量?例如:
public static final String DB_CTRLDATA = "controldata";
public static final String DB_CTRLDATA_CELLADDR = DB_CTRLDATA + ".cell_addr";
public static final String DB_CTRLDATA_ID = DB_CTRLDATA + ".id";
public
如何获得只与当前类关联的字段,而不是所有的父类?
public class BaseClass()
{
public int x = 0;
}
public class AnotherClass() extends BaseClass
{
public int y = -1;
public int z = -2;
public void doStuff()
{
for(Field f : this.getClass().getFields())
{
//Save each
我有一个这样的类层次结构:(=>的意思是“是的一个子类”)
anonymous instance class => abstract class => generic abstract class
或者更简洁地说:
C => B => A
在执行时,"C“调用"A”的方法之一。在“A”的方法中,我想使用反射来查找类"B“中定义的对象的受保护字段。(因此,这些字段是"C”和"B“可以看到的,但”A“不能看到。)
我该如何使用Java反射来做到这一点呢?如果我在A&B或B& C之间添加了一些东西,我如何才能保证它
我的问题是编写JAXB插件,特别是ClassOutline内部。
在com.sun.tools.xjc.outline.ClassOutline中有以下字段:
目标
参考
implClass
implRef
代码:
/**
* This {@link ClassOutline} holds information about this {@link CClassInfo}.
*/
public final @NotNull CClassInfo target;
/**
* The exposed aspect of the a bean.
*
* implC